1Changes made from the "0.7.1" release to the "0.7.2" release: 2----------------------------------------------------------- 3 4* Bertrand Coconnier: 5 6- Fixed bug #2019450 (added a workaround for open source drivers of the Intel 7 chipsets : a bug in the drivers prevent a character to be displayed). 8- Fixed a bug which caused some memory leaks when memory allocation failed 9 during the update of the masters. 10- Updated the demo in the examples: extrusion and ligthing have been added. 11- Fixed glcGetFontMap() and glcGetMasterMap() so that their return is not null 12 when a character is mapped in the font/master but its Unicode name is not 13 stored in QuesoGLC database. 14- Character codes out of range are now rejected when GLC_UCS1 or GLC_UCS2 are 15 enabled. GLC_PARAMETER_ERROR is then raised. 16- Fixed a bug that crashed QuesoGLC when trying to call glcGetFontMap() with a 17 character not mapped in the font. 18- Fixed a bug which caused the measurement caches not to be updated when 19 GLC_RESOLUTION was changed by the users. 20- Fixed a memory leak in the management of the texture atlas: when a font was 21 deleted, the memory allocated to this font in the atlas was definitely lost 22 instead of being given back to the texture allocator. 23- Fixed a bug which did not include trailing spaces in the calculation of 24 bounding boxes. 25- Fixed a bug which caused artifacts when rendering glyphes that extend beyond 26 the EM square. 27- Fixed a bug which prevented letters l and i to be displayed at small scales 28 when GLC_HINTING_QSO and GLC_TEXTURE were enabled. 29- Side effect of the above bug fix : the antialiasing is improved for most 30 characters since they are no longer located against the edges of the texture. 31- Fixed a bug in glcGenFontID() which could return the ID of an existing font. 32- Fixed a race condition in glcGenContext() 33- Function glcGetStringCharMetric() now returns metrics in global string 34 coordinates (otherwise the kerning can not be measured) 35- Fixed bug #1987563 (Kerning does not work when GLC_GL_OBJECTS is enabled) 36 Thanks to GenPFault for the bug report. 37- Fixed bug #2012579 (Mac OSX Leopard compiling bug) - Thanks to Michael Strobel 38 and Tim Baumgartner for the bug report and the patch. 39- Negative values passed to glcResolution() now raise GLC_PARAMETER_ERROR 40- Fixed bug #1980982 (Checks for MinGW in the configure script are incomplete) 41- Feature request #1947346 : added files for pkg-config (thanks to Giel 42 van Shijndel and Dennis Schridde for providing them) 43- Fixed bug #1947464 (Warnings are generated when compiling with gcc option 44 -Wstrict-prototypes) 45- Fixed bug #1935557 (Fonts are not rendered correctly when the resolution is 46 changed using glcResolution). 47 48Changes made from the "0.7.0" release to the "0.7.1" release: 49----------------------------------------------------------- 50 51* Bertrand Coconnier: 52 53- Fixed the bugs #1852883 and #1890660 (VBOs had an erratic behaviour on some 54 Mac OS X platforms and Intel X3100 gfx cards under Linux). 55- Removed the workaround for bug #1852883 56 57Changes made from the "0.6.5" release to the "0.7.0" release: 58----------------------------------------------------------- 59 60* Bertrand Coconnier: 61 62- Added a workaround for bug #1852883 : VBOs are disabled on Mac OSX platforms 63- Fixed a bug in the measurement routines which caused the advance vector of 64 strings to be wrongly computed. 65- Simplified a bit the GL state management (enabling of GL_TEXTURE_2D should now 66 be done by the user when the rendering style is GLC_TEXTURE) 67- Updated GLEW source code to release 1.5.0 68- glcGetFontMap() and glcGetMasterMap() now return GLC_NONE if the font/master 69 does not map 'inCode'. 70- Updated test7 in order not to report an error when testing fonts which defines 71 a space character with no width. 72- glcGenFontID() now creates an empty font in order to reserve the ID for a 73 future use. The new ID can be freed by deleting it with glcDeleteFont(). 74- Measurement datas of glyphes are now cached in order to accelerate the 75 measurement commands when GLC_GL_OBJECTS is enabled. 76- Fonts which belong to the same family are now grouped in the same master. 77- Added project files for Microsoft Visual C++ 2005 78- Fixed bug #1856336 (glcFontFace reports GLC_RESOURCE_ERROR on Windows when 79 selecting the "Arial Regular" font face). 80- Removed explicit calls to glGetString(GL_VERSION) and 81 glGetString(GL_EXTENSIONS) in glcContext() since GLEW already takes care of 82 that. 83- Fixed bug #1843710 (Code to handle missing FTC_Manager_* is broken). 84- GLC_LINE mode now uses Vertex Buffer Objects (VBO) whenever the gfx card 85 supports them 86- Added extension GLC_QSO_buffer_object to report the use of VBOs and PBOs 87 through glcGeti(GLC_BUFFER_OBJECT_COUNT_QSO) and its corresponding call to 88 glcGetListi(GLC_BUFFER_OBJECT_LIST_QSO, int). 89- GLC_TEXTURE mode now uses Vertex Buffer Objects (VBO) whenever the gfx card 90 supports them 91- Fixed bug #1834256 (part II) : The configure script now guesses the correct 92 flags to use in order to cross-compile QuesoGLC for MinGW32 93- Fixed bug #1834256 (part I) : An option has been added to the build scripts 94 in order to disable the build of tests and examples 95- Fixed bug #1640256 (RTL scripts were wrongly supported and the fix introduced 96 for release 0.6 was actually a partial fix). 97- Improved tests coverage (all GLC functions are now tested at least once with 98 all its legal attributes) 99- Spacing characters have now their own caching system when GLC_GL_OBJECTS is 100 enabled. 101- Code refactoring between glcRenderString() and glcRenderCountedString() in 102 order to maximize common code for easier maintenance. 103- Display lists are now called earlier in glcRenderChar() in order to minimize 104 useless overhead. 105 106Changes made from the "0.6" release to the "0.6.5" release: 107----------------------------------------------------------- 108 109* Bertrand Coconnier: 110 111- Rendering and measuring routines now skip control characters instead of 112 having a random behavior about them. 113- Fixed bug #1820546 (glcRenderString("") displayed the last rendered string 114 minus its first character) 115- Fixed bug #1821219 (Blank characters (i.e. spaces) were wrongly transformed 116 into null characters) 117- Removed the use of FcStrSet and FcStrList objects for the catalog list. Use 118 object __GLCarray instead. 119- Fixed bug #1814773 (QuesoGLC uses the system library GLEW whenever 120 possible. Otherwise a copy of GLEW is automagically built and embedded with 121 QuesoGLC) 122- Fixed bug #1812058 (QuesoGLC uses the system library FriBiDi whenever 123 possible. Otherwise a copy of FriBiDi is automagically built and embedded with 124 QuesoGLC) 125- Fixed bug #1754660 (actually a partial fix. See explanations on bug #1754660 126 on SourceForge.net) 127- Renamed some type names (FT_ULong, FcChar8, ...) in order to make them more 128 portable. 129- Minimized the use of pthread_get_specific()/TlsGetValue() when only one thread 130 is used and when ELF TLS is not available, since calls to those functions are 131 expansive. 132- Removed the useless QUESOGLC_STATIC_LIBRARY 133- Modified QuesoGLC threading implementation in order to use ELF TLS when 134 available. This allows to discard the expansive calls to pthread_get_specific. 135- Removed the useless QUESOGLC_VERSION macro 136- Removed __glcFaceDescGetCharMap() which were buggy for some fonts. Now uses 137 Fontconfig patterns instead. This fixes a bug which created a new font for 138 each newly rendered glyph. 139 140Changes made from the "0.5" release to the "0.6" release: 141----------------------------------------------------------- 142 143* Bertrand Coconnier: 144 145- Fixed bug #1640256 : the advance vector now supports RTL strings 146- Fixed a bug by disabling kerning when two successive characters of a string 147 are not rendered with the same font. 148- Modified __glcFaceDescGetFontFormat() to use FT_Get_X11_Font_Format(), 149 whenever available, to detect the font format. 150- Fixed a bug which caused a character that was not mapped to any font to be 151 rendered wrongly the second time it is displayed when GLC_KERNING_QSO is 152 enabled (bug reported by Brandon Casey). 153- Added a test in the tests directory that checks if empty strings are 154 correctly handled by the functions of QuesoGLC (no crash, no unexpected 155 errors, no memory leaks). 156- Modified the texture routines so that QuesoGLC tries several sizes of texture 157 before giving up when rendering in GLC_TEXTURE mode with GLC_GL_OBJECTS 158 disabled. 159- Fixed global commands so that they can not execute GL commands since we can 160 not make sure that the relevant GL context is bound to the current thread 161 when a global GLC command is executed. 162- Changed __glcSaveGLState() and __glcRestoreGLState() so that only a minimal 163 part of the GL state is saved before the rendering commands are issued. 164- Removed redundancy in the calls to glBindTexture() when the GLC_TEXTURE 165 rendering mode is used. 166- Removed the visibility test based on bounding boxes since it slowed down 167 everything and the user can perform this test himself by using measurement 168 commands. 169- Modified immediate texture rendering to take advantage of pixel buffer 170 objects (PBO) whenever the gfx card supports them. 171- Optimized the rendering code so that the conversion from 26.6 fixed point 172 coordinates to GLfloat is partially done by the GPU by using glScalef(). 173- Cleaned up some internal transactions between private functions in order to 174 prevent back and forth translation between a font ID and its corresponding 175 structure __GLCfont. 176- Code cleanup : 177 * Fixed the signed/unsigned comparisons 178 * Removed unused function parameters 179 * Renamed the structure __GLC* instead of __glc* for more consistency with 180 Mesa. 181 * Added some comments 182- Fixed the computing of the bounding box of a glyph when GLC_EXTRUDE_QSO is 183 enabled. 184- Optimized the de Casteljau algorithm by splitting it into 2 specialized 185 subroutines (one for conic Bezier curves and the other for cubic Bezier 186 curves). 187- glcDeleteContext() does not destroy GL objects anymore. This is done because 188 we can not be sure that the GL context that is current (if any) is the one 189 that contains the GL objects associated to the GLC context that we are 190 destroying. Documentation is updated accordingly. (Issue pointed out by 191 Brandon Casey). 192- Removed some calls to __glcGetCurrent() that could cause operations to be 193 performed on the wrong context or to fail when they should succeed (issue 194 pointed out by Brandon Casey). 195- Removed glPush/PopClientAttrib() and use glIsEnabled() instead since that is 196 much faster. 197- Vertex arrays are now used to render characters in GLC_TRIANGLE mode. 198- QuesoGLC now uses GLEW, the OpenGL Extension Wrangler, to manage OpenGL 199 extensions. 200- Removed the master object, uses FontConfig API instead. This allows to not 201 load all the masters in memory : masters are now loaded "just in time" which 202 reduces the memory footprint of QuesoGLC. Furthermore, when GLC_AUTO_FONT is 203 enabled, QuesoGLC takes into account the user preferences for FontConfig. 204 205* Brandon Casey: 206 207- Declared unused arguments with compiler attributes in order to fix compiler 208 warnings and allow some optimization. 209- Rearranged glcGenContext() to avoid unlikely race. 210- Moved the call to __glcConvertGLintToUcs4() before the GL state is saved in 211 RenderChar(). This saves much GL work if the conversion of the character 212 fails. 213- Avoided strlen call by using return value of snprintf/sprintf_s in unicode.c 214- Fixed __glcCtxQueryBuffer() so that it leaves the context unchanged on 215 failure. 216- Fixed calls to __glcCtxQueryBuffer() so that GLC_RESOURCE_ERROR is not raised 217 twice on failure. 218- Added header unistd.h to master.c since it is needed by access() 219- Fixed test4 by supplying a valid directory for AppendCatalog/PrependCatalog 220- Modified __glcConvertUcs4ToGLint() so that a variable that is only used for 221 debugging is now conditionally compiled 222- Simplified __glcRaiseError() testing of current error state 223- Ensured at least one texture level is created by using a do {} while, 224 otherwise when hinting is enabled and Xscale or Yscale are too small, 225 sometimes no new texture is created and we render a portion of the previous 226 image. 227- Avoided free'ing NULL buffer in texture routines 228- Fixed scalable rendering when using external display list 229- Fixed the character measurement buffer which was not reset at each call of 230 glcMeasureString() or glcMeasureCountedString(). So newly measured characters 231 were continually appended to measurement array. 232- Removed the call to __glcGetScale() in measuring routines since it is not 233 necessary and breaks if hinting is enabled and rendering bitmap. 234- Fixed kerning adjustment in __glcGetCharMetric(). 235- Moved point size adjustments into ofacedesc.c functions to mimic 236 __glcFaceDescGetBoundingBox() 237- Replaced __glcFree() by free() when glc allocation functions didn't allocate 238 the memory. 239- Fixed glcExtensions string in test6.c 240- Changed glScalef() call in unicode.c so that z dimension is not zeroed which 241 breaks hinting. 242- Fixed parameter type of __glcTextureGetImmediate() (GLsizei instead of 243 GLuint). 244- Replaced floating point multiplication by bits shifting. 245- Enabled FT_OUTLINE_HIGH_PRECISION when building mipmaps. 246- Avoided signed/unsigned comparison. 247- Arranged extension strings in GLC_EXTENSIONS alphabetically (as per Section 248 2.5 of GLC Specification Version 0.2 - 27 Oct 1996). 249- Fixed Unicode functions (strlen() does not take into account the trailing 250 '\0' character and a pointer was not dereferenced). 251- Merged pitch and width rounding calculations. 252- Fixed kerning measurement and rendering calculations 253- Modified autoconf files so they build with version 2.57. 254- Made QuesoGLC compile with Freetype library older than 2.1.8. 255- Changed __glcFindIndexList() semantics to return address of separator 256 occurrence. 257- Fixed a test so that the GLC_CATALOG_LIST environment variable is now taken 258 into account. 259- Prevented advance past end of string during conversion between logical order 260 and visual order so that zero length strings are handled properly. 261- Removed NULL dereference after FcPatternGetString(). 262- Fixed texture atlas coordinate calculation. 263- Improved texture rendering by optimizing the bounding box coordinates 264 calculation. 265 266Changes made from the "0.4" release to the "0.5" release: 267----------------------------------------------------------- 268 269- Fixed the #include so that QuesoGLC can be built with MSVC++ 270- Added an attribute stack to save and restore the GLC state variables. 271- Added a matrix stack for GLC_BITMAP_MATRIX. 272- Added support for kerning. 273- Added support for the FreeType cache sub-system. 274- Force thread-safety for included libraries. 275- Fixed a bug where glcGetMasterc() returned silly values for 276 GLC_FULL_NAME_SGI and GLC_VERSION attributes. 277- QuesoGLC is now compliant with the Unicode Bidirectional Algorithm (UAX#9) 278 thanks to Fribidi. 279- Added the ability to extrude the characters. 280- A texture atlas is now used for GLC_TEXTURE rendering style. 281- Improved the speed for display list rendering by moving out some stuff that is 282 only needed for immediate mode rendering. 283- QuesoGLC now tries to re-use as much as possible the texture generated for 284 immediate mode rendering. 285- The OpenGL version is now checked and the texture rendering behaves 286 accordingly. 287- Environment variables GLC_LIST_SEPARATOR and GLC_CATALOG_LIST are now read by 288 QuesoGLC. They supersedes GLC_PATH if defined otherwise GLC_PATH is parsed. 289 (suggestion by Brandon Casey). 290- Blank Unicode characters (that is character which are expected to be blank 291 when drawn) are now managed according to the Unicode standards. 292- Thomas Zimmermann greatly improved the building scripts. 293 294Changes made from the "0.3" release to the "0.4" release: 295----------------------------------------------------------- 296 297- Modified the GLC_PATH parser code in order to use semicolon-separated lists 298 for Win32 and colon-separated for POSIX platforms. 299- Added a makefile so that QuesoGLC can be built under Win32 300- Removed the pthread dependency for Win32 301- Added a new __glcGlyph object that allow to cache the display list, the 302 texture, the bouding box of a glyph. Those objects are managed by 303 __glcFaceDescriptor which allow to keep the glyphes as long as the face exists 304- Revamped the code in order to better encapsulate FT_Face in 305 __glcFaceDescriptor and FcCharSet in _glcCharMap. 306- The thread local storage is now released when QuesoGLC is unloaded 307- Modified the python script that builds the character names database : the 308 number of character names can be given as a command-line parameter. 309- The master object (defined in omaster.h) now uses __glcCharMap instead of 310 FcCharSet. 311- Brandon Casey fixed the rendering commands so that the character sequence 312 \<0> is not issued when glcRenderString is called with a zero length string 313 (i.e. a string that only contains the null terminator) 314- Brandon Casey fixed the measurement commands so that they give correct values 315 for the minimum y coordinate 316- Brandon Casey changed the GL_TEXTURE_ENV_MODE to GL_MODULATE instead of 317 GL_REPLACE in order to allow the user to change the transparency of the text 318 by setting the alpha component with glColor4*() 319- Brandon Casey fixed the GLC_BITMAP and GLC_TEXTURE rendering styles so that 320 the complete set of GL_UNPACK parameters are set before the picture is 321 uploaded in order not to depend on the user setting of those parameters 322- Brandon Casey provided a patch to allow QuesoGLC to compile with FreeType libs 323 older than 2.1.8 (winfonts were not supported before 2.1.8) 324- Pablo Barbáchano provided a patch to allow QuesoGLC to use FreeType 2.2.x 325 (const-ness added to some parameters of the callbak functions of 326 FT_Outline_Decompose) 327- Removed the stupid limit that generated GLC_PARAMETER_ERROR whenever some 328 functions were called when the string type was GLC_UTF8_QSO (see below). 329 Indeed a Unicode codepoint can be no higher than 0x10ffff and can thus be 330 stored in a 32 bits integer in UTF-8 format. 331- Uses GNU extensions of gcc where possible to implement the constructor and the 332 destructor of the library (instead of _init and _fini) 333- Fixed the crashes due to the removal of the combine callback of the GLU 334 tesselator. The callback is now restored and compatible with the arrays of 335 variable size (__glcArray) 336- Quesoglc now uses autotools to build 337- Thomas Zimmermann fixed the string measurement commands that did not return 338 results that were consistent with those returned by glcCharMetric(). 339- Fixed a bug in glcDeleteFont() where the face was not closed before the font 340 was deleted. 341- Display lists are now managed at the charmap level instead of being handled by 342 the masters. This allows a better management and optimizes the GPU memory 343 management by deleting display lists and textures as soon as the corresponding 344 glyph is removed. 345- Charmaps now use binary search instead of linear search 346- Texture mipmap levels in GLC_TEXTURE style are now built directly by QuesoGLC 347 instead of using GLU. It should provide better rendering quality at small 348 pixel sizes 349- The z coordinate of bounding boxes is now also used to determine if a Bezier 350 curve lies outside the viewport 351- Calculations now use GLfloat instead of GLdouble 352- Removed the useless third coordinate of the vertex array used for GLC_LINE 353 and GLC_TRIANGLE styles 354- Fixed a bug where the advance of a glyph that is skipped because it lies 355 outside the viewport were not taken into account 356- Unified the behaviour of the rendering and measuring routines so that the 357 later now take into account the state of GLC_HINTING_QSO. 358- Removed the file 'constant.h' 359- Added the enumerant GLC_HINTING_QSO to the glEnable()/glDisable() functions 360 to allow the user to activate hinting when glyphs are rendered at small pixel 361 sizes. By default, hinting is disabled because it creates visual artifacts 362 when the glyphs are animated. 363- In order to accelerate the rendering of characters, glyphs which bounding box 364 lies outside the viewport are now skipped. 365- In GLC_TEXTURE mode, no mipmap is built anymore if the glyph is rendered in 366 immediate mode (that is if GLC_GL_OBJECTS is disabled and the user is not 367 building a display list). 368- Fixed a bug in glcRenderChar() where the texture used in GLC_TEXTURE mode was 369 deleted after the glyph was rendered if GLC_GL_OBJECTS was disabled. This 370 could lead to unexpected results if the user tried to encapsulate the 371 glcRenderChar() call in a glcNewList/glcEndList pair. 372- In order to accelerate the rendering of glyphs in GLC_LINE and GLC_TRIANGLE 373 modes, outline curves that lie outside the viewport are replaced by a 374 piecewise linear curve that joins the control points. 375- The criterion that is used by the de Casteljau algorithm is now computed in 376 pixel distance rather than in object space distance whenever no display list 377 is building. This leads to a more optimal number of vertices which depends on 378 the actual size of the glyph on the viewport. 379- Scaling of glyphs for the GLC_BITMAP style is now detected thus allowing to 380 pass the correct character size to FreeType (instead of the fixed arbitrary 381 size GLC_POINT_SIZE) when the character is rendered. This optimizes the grid- 382 fitting of the glyph and provides slightly enhanced character rendering at 383 small sizes. 384- Transformation matrices that lead to degenerate cases for the GLC_BITMAP style 385 are now correctly handled. 386- The 'data' and 'length' members of __glcArray are now accessed through macros 387 (GLC_ARRAY_DATA and GLC_ARRAY_LENGTH) instead of explicit pointer 388 dereferencement thus providing some kind of encapsulation for the __glcArray 389 object. 390- Arrays that store the vertices and control points during the rendering of 391 GLC_LINE and GLC_TRIANGLE styles are now handled by the context state. Hence 392 they are not created and deleted each time a glyph is rendered thus saving 393 memory allocation/deallocation. 394- The buffer that stores the measured characters is now an array of variable 395 size (__glcArray) 396- Fixed a bug in measurement commands where bounding boxes and baselines did not 397 take the GLC_RESOLUTION value into account. 398- The de Casteljau algorithm now uses the chordal distance of the control points 399 of the spline rather than the chordal distance of the midpoint of the spline 400 to determine if the curve needs to be broken or not, thus leading to a better 401 handling of antisymmetric cubic curves (such as S-shaped curves). This is also 402 a more severe criterion : some spline curves may now be broken into more 403 segment curves than before. 404- Revamped the implementation of de Casteljau's algorithm : hard-coded limits of 405 arrays have been removed. Data are now handled by arrays of variable size 406 (__glcArray). 407- Charmaps now use arrays of variable size (__glcArray) 408 409Changes made from the "0.2" release to the "0.3" release: 410----------------------------------------------------------- 411 412- Fixed a bug in glcRenderChar(), glcRenderString() and glcRenderCountedString() 413 that prevented the replacement code or the character sequence '\<hexcode>' to 414 be displayed when QuesoGLC failed to find a font that maps a character code. 415- A GLC_PARAMETER_ERROR is raised if the string type is GLC_UTF8_QSO and one of 416 the following functions is called : 417 * glcGeti(GLC_REPLACEMENT_CODE) 418 * the callback function defined by glcCallbackFunc() 419 * glcFontMap() 420 * glcGetFontMap() 421 * glcGetMasterMap() 422 * glcGetCharMetric() 423 * glcRenderChar() 424 * glcReplacementCode() 425- Fixed several issues that prevented QuesoGLC to compile and run on 64 bits 426 platforms 427- Improved the mechanism that determine the format of font files 428- Added support for the GLC_SGI_full_name extension 429- Fixed glcGetMaxCharMetric() where the maximum size of the characters were 430 computed in EM units thus leading to wrong results if the different 431 characters did not have the same EM square size. 432- General management of header files has been moved to internal.h (most source 433 files now just need to include a unique header file "internal.h") 434- Modified glcResolution() so that the resolution of every font of the 435 GLC_CURRENT_FONT_LIST is updated whenever glcResolution() is called 436- The GLC_IS_FIXED_PITCH attribute is now managed per font, not per master 437- The verification of master parameters has been moved to the specific function 438 __glcVerifyMasterParameters(). This simplified the code 439- The management of the header file assert.h has been moved to internal.h 440- Fixed glcIsFont() so that it does not raise GLC_PARAMETER_ERROR when 'inFont' 441 is not the ID of a font 442- Fixed glcGetFonti() so that it returns the font attributes instead of the 443 parent master attributes 444- Fixed glcGenFontID() so that it returns sensible results when it is called 445 several times in a row 446- Fixed glcFontFace() so that the face of every fonts of GLC_CURRENT_FONT_LIST 447 are set to the face identified by 'inFace' if 'inFont' is zero (previously 448 only one face was modified when 'inFont' was zero) 449- Fixed glcFont() so that the client state is left unchanged if an error occurs 450- The UTF-8 support is an extension of QuesoGLC, hence the GLC_UTF8 enumerant 451 has been appended with 'QSO' (like 'QueSO GLC extension'). The enumerant has 452 also been modified which broke the ABI compatibility with version 0.2 453- Brandon Casey removed the hard-coded limit of the charMap array for fonts 454- Brandon Casey modified the allocation and the management of the 455 measurementCharBuffer. It is now dynamically allocated instead of statically 456 defined. 457- Brandon Casey fixed a bug in glclogo.c where GLC_GL_OBJECTS was not disabled 458 hence preventing the display lists to be correctly built. 459- Brandon Casey modified testrender.c so that a box is drawn around the text 460 rendered in GLC_BITMAP style in order to demonstrate proper rotation. This 461 example is analogous to the test that shows failure of SGI's GLC to properly 462 perform this operation (http://www.opengl.org/resources/features/fontsurvey) 463- Fixed a bug in glcFontMap() which screwed the charMap array when a character 464 was removed from the font map (bug reported by Brandon Casey) 465- Textures in the GLC_TEXTURE mode are now stored in GL_ALPHA format in order 466 to nicely superimpose the glyph on the background instead of rendering it 467 over a black box (bug reported by Brandon Casey) 468- Fixed all GLC functions that uses individual character : if the current 469 string type is GLC_UTF8, the GLint code is now correctly handled 470- Fixed a bug in the detection of the filename extension of font files 471- Fixed the master creation when glcGenContext() is called : no void master 472 should be created anymore 473- Fixed a bug so that display lists created by QuesoGLC are now deleted when 474 glcDeleteGLObjects() is called or when a master is destroyed 475- Strings returned by glcGetc() are now converted into the relevant Unicode 476 format 477- Added an "uninstall" target to the makefile 478- When the shared library is built, the version number is appended to the 479 library name and the corresponding links are created when QuesoGLC is 480 installed. This allows several different versions of QuesoGLC to coexist 481 on most *nix (feature suggested by Pablo Barbáchano). 482- Pablo Barbáchano fixed the install process of QuesoGLC 483 484Changes made from the "0.1" release to the "0.2" release: 485----------------------------------------------------------- 486 487- Textures in GLC_TEXTURE mode are now of variable size instead of fixed size 488 (previously 64x64).It both optimizes the texture memory and removes the 489 garbage that could appear when rendering some fonts. 490- Added UTF-8 support 491- QuesoGLC does not open anymore the font files at font creation. Instead, font 492 files are opened when the fonts are added to GLC_CURRENT_FONT_LIST. It lowers 493 the number of font files that are simultaneously opened. 494- Every strings are now stored internally in Unicode UTF-8 format. Strings are 495 converted back to the current GLC_STRING_TYPE "on the fly". 496- Get rid of the string list objects (files ostrlst.[ch]) and the Unicode 497 character object (files ounichar.[ch]). This simplified the code. 498- Now uses standard predefined macros to detect Mac OSX platforms 499- QuesoGLC now uses Fontconfig to locate and examine fonts 500- Fixed invalid preprocessing tokens of test4 that prevented it to be compiled 501 with pedantic-errors enabled. 502- QuesoGLC now uses Doxygen for its documentation. 503 504Changes made from the "Birth" release to the "0.1" release: 505----------------------------------------------------------- 506 507- Get rid of NDBM : Unicode names are now stored in a const array which is 508 automagically built from buildDB.py 509- FreeType lists are now used for the string list object, master lists, 510 font lists, current font lists and texture object lists. 511- A mutex is now used for every access to the database since NDBM is not 512 thread-safe. 513- Fixed a bug where the content returned by dbm_fetch() was freed. This 514 behaviour was wrong since dbm_fetch() returns static data. 515- Now uses NDBM (which is much more portable) instead of GDBM 516- Fixed a bug in glcDeleteContext() where QuesoGLC tried to destroy the GL 517 objects of the current context instead of those of the context to be deleted. 518- Contexts are now stored in a linked list and their number is not limited to 519 16 anymore. 520- Fixed glcGetAllContexts() which returned wrong context IDs and did not zero- 521 terminate the array. 522- Fixed the error path in __glcInitLibrary where glcCommonArea was freed before 523 its members. 524- Added many comments to the sources. 525- Removed the stupid parameter GLC_INTERNAL_ERROR 526- QuesoGLC now computes automatically the resolution of the screen in DPI using 527 X window commands. 528- The GLC_RESOLUTION parameter now provides a way for the user to choose the 529 precision of de Casteljau's algorithm. 530- Fixed a bug that occured when a context was deleted : its entry was not 531 deleted from the 'stateList' array. 532- QuesoGLC now has the ability to use custom memory manager routines 533 (see __glcFree, __glcMalloc and __glcRealloc) 534- FreeType2 now uses a custom memory manager based on __glcFree, __glcMalloc 535 and __glcRealloc. This helps debugging and detection of memory leaks. 536- Variables GLC_MIN_MAPPED_CODE, GLC_MAX_MAPPED_CODE, GLC_CHAR_COUNT and the 537 list GLC_CHAR_LIST are now updated when a new font file is added to a master. 538- Changed license of QuesoGLC to LGPL 539- Fixed glcAppendFont() so that it raises GLC_PARAMETER_ERROR if the font is an 540 element of GLC_CURENT_FONT_LIST at the beginning of the command execution. 541- Fixed glcFont() so that it behaves correctly if the font parameter is zero. 542- Fixed glcFontFace() so that it leaves the current face unchanged if it fails 543 to set a new face. 544- Fixed glcFontMap() so that it checks if the character to be mapped is an 545 element of the list GLC_CHAR_LIST. 546- Fixed glcFontMap() so that if no character name is given then the code 547 'inCode' is removed from the charmap. 548- Fixed glcRenderCountedString(), so that it raises GLC_PARAMETER_ERROR if the 549 parameter inCount is less than zero. 550- Fixed glcReplacementCode() so that it can use a code other than 551 GLC_REPLACEMENT_CODE. 552- Translated C++ code to pure ANSI C (i.e. get rid of C++) 553- QuesoGLC can now be built as a shared library. 554