diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib/freetype/demo/engine-test.bdsproj | 175 | ||||
-rw-r--r-- | src/lib/freetype/demo/engine-test.dpr | 338 | ||||
-rw-r--r-- | src/lib/freetype/demo/engine-test.lpi | 182 | ||||
-rw-r--r-- | src/lib/freetype/demo/nehe/lesson43.bdsproj | 175 | ||||
-rw-r--r-- | src/lib/freetype/demo/nehe/lesson43.dpr | 289 | ||||
-rw-r--r-- | src/lib/freetype/demo/nehe/readme.txt | 9 | ||||
-rw-r--r-- | src/lib/freetype/demo/switches.inc | 1 | ||||
-rw-r--r-- | src/lib/freetype/ftconfig.inc | 35 | ||||
-rw-r--r-- | src/lib/freetype/ftglyph.inc | 435 | ||||
-rw-r--r-- | src/lib/freetype/ftimage.inc | 803 | ||||
-rw-r--r-- | src/lib/freetype/ftoutln.inc | 497 | ||||
-rw-r--r-- | src/lib/freetype/ftstroke.inc | 711 | ||||
-rw-r--r-- | src/lib/freetype/fttypes.inc | 311 |
13 files changed, 0 insertions, 3961 deletions
diff --git a/src/lib/freetype/demo/engine-test.bdsproj b/src/lib/freetype/demo/engine-test.bdsproj deleted file mode 100644 index e5b3e97d..00000000 --- a/src/lib/freetype/demo/engine-test.bdsproj +++ /dev/null @@ -1,175 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<BorlandProject>
- <PersonalityInfo>
- <Option>
- <Option Name="Personality">Delphi.Personality</Option>
- <Option Name="ProjectType">VCLApplication</Option>
- <Option Name="Version">1.0</Option>
- <Option Name="GUID">{41656F26-D552-4948-B9DB-E184B77C3993}</Option>
- </Option>
- </PersonalityInfo>
- <Delphi.Personality>
- <Source>
- <Source Name="MainSource">engine-test.dpr</Source>
- </Source>
- <FileVersion>
- <FileVersion Name="Version">7.0</FileVersion>
- </FileVersion>
- <Compiler>
- <Compiler Name="A">8</Compiler>
- <Compiler Name="B">0</Compiler>
- <Compiler Name="C">1</Compiler>
- <Compiler Name="D">1</Compiler>
- <Compiler Name="E">0</Compiler>
- <Compiler Name="F">0</Compiler>
- <Compiler Name="G">1</Compiler>
- <Compiler Name="H">1</Compiler>
- <Compiler Name="I">1</Compiler>
- <Compiler Name="J">0</Compiler>
- <Compiler Name="K">0</Compiler>
- <Compiler Name="L">1</Compiler> - <Compiler Name="M">0</Compiler> - <Compiler Name="N">1</Compiler> - <Compiler Name="O">1</Compiler> - <Compiler Name="P">1</Compiler> - <Compiler Name="Q">0</Compiler> - <Compiler Name="R">0</Compiler> - <Compiler Name="S">0</Compiler>
- <Compiler Name="T">0</Compiler>
- <Compiler Name="U">0</Compiler>
- <Compiler Name="V">1</Compiler>
- <Compiler Name="W">0</Compiler>
- <Compiler Name="X">1</Compiler>
- <Compiler Name="Y">1</Compiler>
- <Compiler Name="Z">1</Compiler>
- <Compiler Name="ShowHints">True</Compiler>
- <Compiler Name="ShowWarnings">True</Compiler>
- <Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
- <Compiler Name="NamespacePrefix"></Compiler>
- <Compiler Name="GenerateDocumentation">False</Compiler>
- <Compiler Name="DefaultNamespace"></Compiler>
- <Compiler Name="SymbolDeprecated">True</Compiler>
- <Compiler Name="SymbolLibrary">True</Compiler>
- <Compiler Name="SymbolPlatform">True</Compiler>
- <Compiler Name="SymbolExperimental">True</Compiler>
- <Compiler Name="UnitLibrary">True</Compiler>
- <Compiler Name="UnitPlatform">True</Compiler>
- <Compiler Name="UnitDeprecated">True</Compiler>
- <Compiler Name="UnitExperimental">True</Compiler>
- <Compiler Name="HResultCompat">True</Compiler>
- <Compiler Name="HidingMember">True</Compiler>
- <Compiler Name="HiddenVirtual">True</Compiler>
- <Compiler Name="Garbage">True</Compiler>
- <Compiler Name="BoundsError">True</Compiler>
- <Compiler Name="ZeroNilCompat">True</Compiler>
- <Compiler Name="StringConstTruncated">True</Compiler>
- <Compiler Name="ForLoopVarVarPar">True</Compiler>
- <Compiler Name="TypedConstVarPar">True</Compiler>
- <Compiler Name="AsgToTypedConst">True</Compiler>
- <Compiler Name="CaseLabelRange">True</Compiler>
- <Compiler Name="ForVariable">True</Compiler>
- <Compiler Name="ConstructingAbstract">True</Compiler>
- <Compiler Name="ComparisonFalse">True</Compiler>
- <Compiler Name="ComparisonTrue">True</Compiler>
- <Compiler Name="ComparingSignedUnsigned">True</Compiler>
- <Compiler Name="CombiningSignedUnsigned">True</Compiler>
- <Compiler Name="UnsupportedConstruct">True</Compiler>
- <Compiler Name="FileOpen">True</Compiler>
- <Compiler Name="FileOpenUnitSrc">True</Compiler>
- <Compiler Name="BadGlobalSymbol">True</Compiler>
- <Compiler Name="DuplicateConstructorDestructor">True</Compiler>
- <Compiler Name="InvalidDirective">True</Compiler>
- <Compiler Name="PackageNoLink">True</Compiler>
- <Compiler Name="PackageThreadVar">True</Compiler>
- <Compiler Name="ImplicitImport">True</Compiler>
- <Compiler Name="HPPEMITIgnored">True</Compiler>
- <Compiler Name="NoRetVal">True</Compiler>
- <Compiler Name="UseBeforeDef">True</Compiler>
- <Compiler Name="ForLoopVarUndef">True</Compiler>
- <Compiler Name="UnitNameMismatch">True</Compiler>
- <Compiler Name="NoCFGFileFound">True</Compiler>
- <Compiler Name="ImplicitVariants">True</Compiler>
- <Compiler Name="UnicodeToLocale">True</Compiler>
- <Compiler Name="LocaleToUnicode">True</Compiler>
- <Compiler Name="ImagebaseMultiple">True</Compiler>
- <Compiler Name="SuspiciousTypecast">True</Compiler>
- <Compiler Name="PrivatePropAccessor">True</Compiler>
- <Compiler Name="UnsafeType">False</Compiler>
- <Compiler Name="UnsafeCode">False</Compiler>
- <Compiler Name="UnsafeCast">False</Compiler>
- <Compiler Name="OptionTruncated">True</Compiler>
- <Compiler Name="WideCharReduced">True</Compiler>
- <Compiler Name="DuplicatesIgnored">True</Compiler>
- <Compiler Name="UnitInitSeq">True</Compiler>
- <Compiler Name="LocalPInvoke">True</Compiler>
- <Compiler Name="MessageDirective">True</Compiler>
- <Compiler Name="CodePage"></Compiler>
- </Compiler>
- <Linker>
- <Linker Name="MapFile">0</Linker>
- <Linker Name="OutputObjs">0</Linker>
- <Linker Name="GenerateHpps">False</Linker>
- <Linker Name="ConsoleApp">1</Linker>
- <Linker Name="DebugInfo">False</Linker>
- <Linker Name="RemoteSymbols">False</Linker>
- <Linker Name="GenerateDRC">False</Linker>
- <Linker Name="MinStackSize">16384</Linker>
- <Linker Name="MaxStackSize">1048576</Linker>
- <Linker Name="ImageBase">4194304</Linker>
- <Linker Name="ExeDescription"></Linker>
- </Linker>
- <Directories>
- <Directories Name="OutputDir"></Directories>
- <Directories Name="UnitOutputDir"></Directories>
- <Directories Name="PackageDLLOutputDir"></Directories>
- <Directories Name="PackageDCPOutputDir"></Directories>
- <Directories Name="SearchPath">..\..\JEDI-SDL\SDL\Pas</Directories>
- <Directories Name="Packages">vclx;vcl;rtl;vclactnband</Directories>
- <Directories Name="Conditionals"></Directories>
- <Directories Name="DebugSourceDirs"></Directories>
- <Directories Name="UsePackages">False</Directories>
- </Directories>
- <Parameters>
- <Parameters Name="RunParams"></Parameters>
- <Parameters Name="HostApplication"></Parameters>
- <Parameters Name="Launcher"></Parameters>
- <Parameters Name="UseLauncher">False</Parameters>
- <Parameters Name="DebugCWD"></Parameters>
- <Parameters Name="Debug Symbols Search Path"></Parameters>
- <Parameters Name="LoadAllSymbols">True</Parameters>
- <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
- </Parameters>
- <Language>
- <Language Name="ActiveLang"></Language>
- <Language Name="ProjectLang">$00000000</Language>
- <Language Name="RootDir"></Language>
- </Language>
- <VersionInfo>
- <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
- <VersionInfo Name="AutoIncBuild">False</VersionInfo>
- <VersionInfo Name="MajorVer">1</VersionInfo>
- <VersionInfo Name="MinorVer">0</VersionInfo>
- <VersionInfo Name="Release">0</VersionInfo>
- <VersionInfo Name="Build">0</VersionInfo>
- <VersionInfo Name="Debug">False</VersionInfo>
- <VersionInfo Name="PreRelease">False</VersionInfo>
- <VersionInfo Name="Special">False</VersionInfo>
- <VersionInfo Name="Private">False</VersionInfo>
- <VersionInfo Name="DLL">False</VersionInfo>
- <VersionInfo Name="Locale">1031</VersionInfo>
- <VersionInfo Name="CodePage">1252</VersionInfo>
- </VersionInfo>
- <VersionInfoKeys>
- <VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
- <VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
- <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
- <VersionInfoKeys Name="InternalName"></VersionInfoKeys>
- <VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
- <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
- <VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
- <VersionInfoKeys Name="ProductName"></VersionInfoKeys>
- <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
- <VersionInfoKeys Name="Comments"></VersionInfoKeys>
- </VersionInfoKeys>
- </Delphi.Personality>
-</BorlandProject>
diff --git a/src/lib/freetype/demo/engine-test.dpr b/src/lib/freetype/demo/engine-test.dpr deleted file mode 100644 index bbd7d890..00000000 --- a/src/lib/freetype/demo/engine-test.dpr +++ /dev/null @@ -1,338 +0,0 @@ -program engine_test; -(* - * This code was created by Jeff Molofee '99 - * (ported to Linux/SDL by Ti Leggett '01) - * - * If you've found this code useful, please let me know. - * - * Visit Jeff at http://nehe.gamedev.net/ - * - * or for port-specific comments, questions, bugreports etc. - * email to leggett@eecs.tulane.edu - *) - -{$IFDEF FPC} - {$mode delphi}{$H+} -{$ENDIF} - -{$APPTYPE Console} - -uses - moduleloader in '../../JEDI-SDL/SDL/Pas/moduleloader.pas', - SDL in '../../JEDI-SDL/SDL/Pas/sdl.pas', - gl in '../../JEDI-SDL/OpenGL/Pas/gl.pas', - glext in '../../JEDI-SDL/OpenGL/Pas/glext.pas', - glu in '../../JEDI-SDL/OpenGL/Pas/glu.pas', - {$IFNDEF FPC} - ctypes in '../../ctypes/ctypes.pas', - {$ENDIF} - FreeType in '../freetype.pas', - UFont in 'UFont.pas', - //UFont in '../../../base/UFont.pas', - UUnicodeUtils in '../../../base/UUnicodeUtils.pas', - math, - sysutils; - -const - // screen width, height, and bit depth - SCREEN_WIDTH = 640; - SCREEN_HEIGHT = 480; - SCREEN_BPP = 16; - - //FONT_FILE = 'Test.ttf'; - //FONT_FILE = 'C:/Windows/Fonts/Arial.ttf'; - //FONT_FILE = 'C:/Windows/Fonts/SimSun.ttf'; - //FONT_FILE = 'eurostarregularextended.ttf'; - FONT_FILE = '../../../../game/fonts/FreeSans/FreeSans.ttf'; - -var - OurFont: TScalableFont; - // This is our SDL surface - surface: PSDL_Surface; - cnt1, cnt2: GLfloat; - -(* function to release/destroy our resources and restoring the old desktop *) -procedure Quit(returnCode: integer); -begin - OurFont.Free; - - // clean up the window - SDL_Quit( ); - - // and exit appropriately - Halt( returnCode ); -end; - -(* function to reset our viewport after a window resize *) -function resizeWindow(width: integer; height: integer): boolean; -begin - // Protect against a divide by zero - if ( height = 0 ) then - height := 1; - - // Setup our viewport. - glViewport( 0, 0, GLsizei(width), GLsizei(height) ); - - // change to the projection matrix and set our viewing volume. - glMatrixMode( GL_PROJECTION ); - glLoadIdentity( ); - - // Set our perspective - //gluOrtho2D(0, width, 0, height); - gluOrtho2D(0, 800, 0, 600); - - // Make sure we're chaning the model view and not the projection - glMatrixMode( GL_MODELVIEW ); - - // Reset The View - glLoadIdentity( ); - - Result := true; -end; - -(* function to handle key press events *) -procedure handleKeyPress(keysym: PSDL_keysym); -begin - case ( keysym^.sym ) of - SDLK_ESCAPE: - begin - // ESC key was pressed - Quit( 0 ); - end; - SDLK_F1: - begin - // F1 key was pressed - // this toggles fullscreen mode - SDL_WM_ToggleFullScreen( surface ); - end; - end; -end; - -(* general OpenGL initialization function *) -function initGL(): boolean; -begin - // Enable smooth shading - glShadeModel( GL_SMOOTH ); - - // Set the background black - //glClearColor( 1, 1, 1.0, 1.0 ); - //glClearColor( 0.3, 0.7, 1.0, 1.0 ); - glClearColor( 0.0, 0.0, 0.0, 1.0 ); - - // Depth buffer setup - glClearDepth( 1.0 ); - - // Enables Depth Testing - glEnable( GL_DEPTH_TEST ); - - // The Type Of Depth Test To Do - glDepthFunc( GL_LEQUAL ); - - // Really Nice Perspective Calculations - glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); - - OurFont := TFTScalableFont.Create(FONT_FILE, 64, 0.03); - //OurFont := TFTFont.Create(FONT_FILE, 128); - //OurFont := TFTScalableOutlineFont.Create(FONT_FILE, 64, 0.03); - //OurFont.UseKerning := false; - //TFTScalableOutlineFont(OurFont).SetOutlineColor(1, 0, 0, 1); - //OurFont := TOutlineFont.Create(FONT_FILE, 32, 2); - //OurFont.LineSpacing := OurFont.LineSpacing * 0.5; - - Result := true; -end; - -var - NextTime: cardinal; - Counter: integer; - -type - TVector4d = array[0..3] of GLdouble; - -function NewVector4d(a, b, c, d: GLdouble): TVector4d; -begin - Result[0] := a; - Result[1] := b; - Result[2] := c; - Result[3] := d; -end; - -(* Here goes our drawing code *) -function drawGLScene(): boolean; -var - msg: WideString; - bounds: TBoundsDbl; -begin - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer - - //msg := 'Here'#13'there'#13'be'#13#13'newlines'#13'.'; - //msg := 'Here'#13'newlines'; - msg := 'Active FreeType Text - ' + FloatToStr(cnt1); - //msg := 'Hören'#13'其自诞生至今'#13'спецификация'; - - // Red text - glLoadIdentity(); - glTranslatef(cnt2, 240, 0); - if (cnt2 > 800) then - cnt2 := 0; - glTranslatef(30, 40, 0); - //glTranslatef(320, 240, 0); - //glRotatef(cnt1, 0, 0, 1); - //glScalef(1, 0.8 + 0.3*cos(cnt1/5), 1); - - OurFont.Style := [Italic, {Underline,} Reflect]; - //OurFont.GlyphSpacing := 10; - //OurFont.SetOutlineColor(0.5, 0.5, 0.5); - //OurFont.ReflectionSpacing := -4; - //OurFont.UseKerning := false; - OurFont.Height := 150;//cnt2; - //OurFont.Reset; - //OurFont.Aspect := 2; - - glColor3f(1, 1, 0); - bounds := OurFont.BBox(msg); - //glRectf(bounds.Left, OurFont.Ascender, bounds.Right, OurFont.Ascender-OurFont.Height); - - glColor4f(1, 1, 1, 1); - //OurFont.ReflectionSpacing := 0; - OurFont.Print(msg); - - cnt1 := cnt1 + 0.051; // Increase The First Counter - cnt2 := cnt2 + 0.005; // Increase The First Counter - - SDL_GL_SwapBuffers( ); - - Inc(Counter); - - if (NextTime < SDL_GetTicks()) then - begin - NextTime := SDL_GetTicks() + 2000; - writeln('FPS: ' + floattostr(Counter / 2.0)); - Counter := 0; - end; - - Result := true; -end; - -var - // Flags to pass to SDL_SetVideoMode - videoFlags: integer; - // main loop variable - done: boolean = false; - // used to collect events - event: TSDL_Event; - // this holds some info about our display - videoInfo: PSDL_VideoInfo; - // whether or not the window is active - isActive: boolean = true; - -begin - // initialize SDL - if ( SDL_Init( SDL_INIT_VIDEO or SDL_INIT_TIMER ) < 0 ) then - begin - writeln( ErrOutput, 'Video initialization failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - // Fetch the video info - videoInfo := SDL_GetVideoInfo( ); - - if ( videoInfo = nil ) then - begin - writeln( ErrOutput, 'Video query failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // Enable double buffering - - // the flags to pass to SDL_SetVideoMode - videoFlags := SDL_OPENGL; // Enable OpenGL in SDL - videoFlags := videoFlags or SDL_HWPALETTE; // Store the palette in hardware - videoFlags := videoFlags or SDL_RESIZABLE; // Enable window resizing - - // This checks to see if surfaces can be stored in memory - if ( videoInfo^.hw_available <> 0 ) then - videoFlags := videoFlags or SDL_HWSURFACE - else - videoFlags := videoFlags or SDL_SWSURFACE; - - // This checks if hardware blits can be done - if ( videoInfo^.blit_hw <> 0 ) then - videoFlags := videoFlags or SDL_HWACCEL; - - // Sets up OpenGL double buffering - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - - // get a SDL surface - surface := SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, - videoFlags ); - - // Verify there is a surface - if ( surface = nil ) then - begin - writeln( ErrOutput, 'Video mode set failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - // initialize OpenGL - initGL(); - - // resize the initial window - resizeWindow( SCREEN_WIDTH, SCREEN_HEIGHT ); - - // wait for events - while ( not done ) do - begin - { handle the events in the queue } - - while ( SDL_PollEvent( @event ) <> 0 ) do - begin - case( event.type_ ) of - SDL_ACTIVEEVENT: - begin - // Something's happend with our focus - // If we are iconified, we shouldn't draw the screen - if ( (event.active.state and SDL_APPACTIVE) <> 0 ) then - begin - if ( event.active.gain = 0 ) then - isActive := false - else - isActive := true; - end; - end; - SDL_VIDEORESIZE: - begin - // handle resize event - {$IFDEF UNIX} - surface := SDL_SetVideoMode( event.resize.w, - event.resize.h, - 16, videoFlags ); - if ( surface = nil ) then - begin - writeln( ErrOutput, 'Could not get a surface after resize: ' + SDL_GetError( ) ); - Quit( 1 ); - end; - {$ENDIF} - resizeWindow( event.resize.w, event.resize.h ); - end; - SDL_KEYDOWN: - begin - // handle key presses - handleKeyPress( @event.key.keysym ); - end; - SDL_QUITEV: - begin - // handle quit requests - done := true; - end; - end; - end; - - // draw the scene - if ( isActive ) then - drawGLScene( ); - end; - - // clean ourselves up and exit - Quit( 0 ); -end. diff --git a/src/lib/freetype/demo/engine-test.lpi b/src/lib/freetype/demo/engine-test.lpi deleted file mode 100644 index 45483a56..00000000 --- a/src/lib/freetype/demo/engine-test.lpi +++ /dev/null @@ -1,182 +0,0 @@ -<?xml version="1.0"?>
-<CONFIG>
- <ProjectOptions>
- <PathDelim Value="\"/>
- <Version Value="6"/>
- <General>
- <MainUnit Value="0"/>
- <IconPath Value=".\"/>
- <TargetFileExt Value=""/>
- <ActiveEditorIndexAtStart Value="0"/>
- </General>
- <VersionInfo>
- <ProjectVersion Value=""/>
- <Language Value=""/>
- <CharSet Value=""/>
- </VersionInfo>
- <PublishOptions>
- <Version Value="2"/>
- <DestinationDirectory Value="$(TestDir)\publishedproject\"/>
- <IgnoreBinaries Value="False"/>
- <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
- <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
- </PublishOptions>
- <RunParams>
- <local>
- <FormatVersion Value="1"/>
- <LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/>
- </local>
- </RunParams>
- <Units Count="16">
- <Unit0> - <Filename Value="engine-test.dpr"/> - <IsPartOfProject Value="True"/> - <CursorPos X="18" Y="25"/> - <TopLine Value="1"/> - <EditorIndex Value="0"/> - <UsageCount Value="72"/> - <Loaded Value="True"/> - </Unit0>
- <Unit1>
- <Filename Value="JEDI-SDL\OpenGL\Pas\opengl12.pas"/>
- <UnitName Value="opengl12"/>
- <CursorPos X="20" Y="9922"/>
- <TopLine Value="9889"/>
- <UsageCount Value="5"/>
- </Unit1>
- <Unit2>
- <Filename Value="JEDI-SDL\SDL\Pas\sdl.pas"/>
- <UnitName Value="sdl"/>
- <CursorPos X="29" Y="3569"/>
- <TopLine Value="3547"/>
- <UsageCount Value="5"/>
- </Unit2>
- <Unit3>
- <Filename Value="FreeType.pas"/>
- <UnitName Value="FreeType"/>
- <CursorPos X="6" Y="1"/>
- <TopLine Value="1"/>
- <UsageCount Value="5"/>
- </Unit3>
- <Unit4>
- <Filename Value="UFreeType.pas"/>
- <UnitName Value="UFreeType"/>
- <CursorPos X="47" Y="111"/>
- <TopLine Value="76"/>
- <UsageCount Value="35"/>
- </Unit4>
- <Unit5>
- <Filename Value="freetype"/>
- <CursorPos X="1" Y="1"/>
- <TopLine Value="1"/>
- <UsageCount Value="8"/>
- <SyntaxHighlighter Value="None"/>
- </Unit5>
- <Unit6>
- <Filename Value="freetype\freetype.pas"/>
- <UnitName Value="freetype"/>
- <CursorPos X="31" Y="807"/>
- <TopLine Value="14"/>
- <UsageCount Value="15"/>
- </Unit6>
- <Unit7>
- <Filename Value="..\..\daten\Projekte\UltraStarDX\trunk\Game\Code\lib\ffmpeg\avcodec.pas"/>
- <UnitName Value="avcodec"/>
- <CursorPos X="1" Y="38"/>
- <TopLine Value="1"/>
- <UsageCount Value="6"/>
- </Unit7>
- <Unit8>
- <Filename Value="..\..\JEDI-SDL\OpenGL\Pas\gl.pas"/>
- <UnitName Value="gl"/>
- <CursorPos X="2" Y="89"/>
- <TopLine Value="69"/>
- <UsageCount Value="9"/>
- </Unit8>
- <Unit9>
- <Filename Value="..\..\ctypes\ctypes.pas"/>
- <UnitName Value="ctypes"/>
- <CursorPos X="8" Y="25"/>
- <TopLine Value="51"/>
- <UsageCount Value="9"/>
- </Unit9>
- <Unit10>
- <Filename Value="..\..\JEDI-SDL\OpenGL\Pas\glu.pas"/>
- <UnitName Value="glu"/>
- <CursorPos X="14" Y="155"/>
- <TopLine Value="135"/>
- <UsageCount Value="9"/>
- </Unit10>
- <Unit11>
- <Filename Value="..\..\JEDI-SDL\SDL\Pas\sdl.pas"/>
- <UnitName Value="sdl"/>
- <CursorPos X="12" Y="1418"/>
- <TopLine Value="1398"/>
- <UsageCount Value="9"/>
- </Unit11>
- <Unit12>
- <Filename Value="..\freetype.pas"/>
- <UnitName Value="freetype"/>
- <CursorPos X="3" Y="1985"/>
- <TopLine Value="1965"/>
- <UsageCount Value="10"/>
- </Unit12>
- <Unit13>
- <Filename Value="C:\Programme\lazarus\fpc\2.2.0\source\rtl\objpas\classes\classesh.inc"/>
- <CursorPos X="13" Y="26"/>
- <TopLine Value="6"/>
- <UsageCount Value="13"/>
- </Unit13>
- <Unit14>
- <Filename Value="C:\Programme\lazarus\fpc\2.2.0\source\rtl\objpas\types.pp"/>
- <UnitName Value="types"/>
- <CursorPos X="7" Y="105"/>
- <TopLine Value="73"/>
- <UsageCount Value="12"/>
- </Unit14>
- <Unit15>
- <Filename Value="UFont.pas"/>
- <UnitName Value="UFont"/>
- <CursorPos X="15" Y="1752"/>
- <TopLine Value="1734"/>
- <UsageCount Value="10"/> - </Unit15> - </Units> - <JumpHistory Count="2" HistoryIndex="1"> - <Position1> - <Filename Value="engine-test.dpr"/> - <Caret Line="52" Column="10" TopLine="37"/> - </Position1> - <Position2> - <Filename Value="engine-test.dpr"/> - <Caret Line="1" Column="1" TopLine="1"/> - </Position2> - </JumpHistory> - </ProjectOptions> - <CompilerOptions> - <Version Value="8"/> - <PathDelim Value="\"/>
- <SearchPaths>
- <IncludeFiles Value="..\..\JEDI-SDL\SDL\Pas\"/>
- </SearchPaths>
- <Other>
- <CompilerPath Value="$(CompPath)"/>
- </Other>
- </CompilerOptions>
- <Debugging>
- <BreakPoints Count="1">
- <Item1>
- <Source Value="lesson43.dpr"/>
- <Line Value="138"/>
- </Item1>
- </BreakPoints>
- <Exceptions Count="2">
- <Item1>
- <Name Value="ECodetoolError"/>
- </Item1>
- <Item2>
- <Name Value="EFOpenError"/>
- </Item2>
- </Exceptions>
- </Debugging>
-</CONFIG>
diff --git a/src/lib/freetype/demo/nehe/lesson43.bdsproj b/src/lib/freetype/demo/nehe/lesson43.bdsproj deleted file mode 100644 index 9d3851c4..00000000 --- a/src/lib/freetype/demo/nehe/lesson43.bdsproj +++ /dev/null @@ -1,175 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<BorlandProject>
- <PersonalityInfo>
- <Option>
- <Option Name="Personality">Delphi.Personality</Option>
- <Option Name="ProjectType">VCLApplication</Option>
- <Option Name="Version">1.0</Option>
- <Option Name="GUID">{3306FA70-362B-4647-A969-BCEA731F436C}</Option>
- </Option>
- </PersonalityInfo>
- <Delphi.Personality>
- <Source>
- <Source Name="MainSource">lesson43.dpr</Source>
- </Source>
- <FileVersion>
- <FileVersion Name="Version">7.0</FileVersion>
- </FileVersion>
- <Compiler>
- <Compiler Name="A">8</Compiler>
- <Compiler Name="B">0</Compiler>
- <Compiler Name="C">1</Compiler>
- <Compiler Name="D">1</Compiler>
- <Compiler Name="E">0</Compiler>
- <Compiler Name="F">0</Compiler>
- <Compiler Name="G">1</Compiler>
- <Compiler Name="H">1</Compiler>
- <Compiler Name="I">1</Compiler>
- <Compiler Name="J">0</Compiler>
- <Compiler Name="K">0</Compiler>
- <Compiler Name="L">1</Compiler>
- <Compiler Name="M">0</Compiler>
- <Compiler Name="N">1</Compiler>
- <Compiler Name="O">1</Compiler>
- <Compiler Name="P">1</Compiler>
- <Compiler Name="Q">0</Compiler>
- <Compiler Name="R">0</Compiler>
- <Compiler Name="S">0</Compiler>
- <Compiler Name="T">0</Compiler>
- <Compiler Name="U">0</Compiler>
- <Compiler Name="V">1</Compiler>
- <Compiler Name="W">0</Compiler>
- <Compiler Name="X">1</Compiler>
- <Compiler Name="Y">1</Compiler>
- <Compiler Name="Z">1</Compiler>
- <Compiler Name="ShowHints">True</Compiler>
- <Compiler Name="ShowWarnings">True</Compiler>
- <Compiler Name="UnitAliases">WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;</Compiler>
- <Compiler Name="NamespacePrefix"></Compiler>
- <Compiler Name="GenerateDocumentation">False</Compiler>
- <Compiler Name="DefaultNamespace"></Compiler>
- <Compiler Name="SymbolDeprecated">True</Compiler>
- <Compiler Name="SymbolLibrary">True</Compiler>
- <Compiler Name="SymbolPlatform">True</Compiler>
- <Compiler Name="SymbolExperimental">True</Compiler>
- <Compiler Name="UnitLibrary">True</Compiler>
- <Compiler Name="UnitPlatform">True</Compiler>
- <Compiler Name="UnitDeprecated">True</Compiler>
- <Compiler Name="UnitExperimental">True</Compiler>
- <Compiler Name="HResultCompat">True</Compiler>
- <Compiler Name="HidingMember">True</Compiler>
- <Compiler Name="HiddenVirtual">True</Compiler>
- <Compiler Name="Garbage">True</Compiler>
- <Compiler Name="BoundsError">True</Compiler>
- <Compiler Name="ZeroNilCompat">True</Compiler>
- <Compiler Name="StringConstTruncated">True</Compiler>
- <Compiler Name="ForLoopVarVarPar">True</Compiler>
- <Compiler Name="TypedConstVarPar">True</Compiler>
- <Compiler Name="AsgToTypedConst">True</Compiler>
- <Compiler Name="CaseLabelRange">True</Compiler>
- <Compiler Name="ForVariable">True</Compiler>
- <Compiler Name="ConstructingAbstract">True</Compiler>
- <Compiler Name="ComparisonFalse">True</Compiler>
- <Compiler Name="ComparisonTrue">True</Compiler>
- <Compiler Name="ComparingSignedUnsigned">True</Compiler>
- <Compiler Name="CombiningSignedUnsigned">True</Compiler>
- <Compiler Name="UnsupportedConstruct">True</Compiler>
- <Compiler Name="FileOpen">True</Compiler>
- <Compiler Name="FileOpenUnitSrc">True</Compiler>
- <Compiler Name="BadGlobalSymbol">True</Compiler>
- <Compiler Name="DuplicateConstructorDestructor">True</Compiler>
- <Compiler Name="InvalidDirective">True</Compiler>
- <Compiler Name="PackageNoLink">True</Compiler>
- <Compiler Name="PackageThreadVar">True</Compiler>
- <Compiler Name="ImplicitImport">True</Compiler>
- <Compiler Name="HPPEMITIgnored">True</Compiler>
- <Compiler Name="NoRetVal">True</Compiler>
- <Compiler Name="UseBeforeDef">True</Compiler>
- <Compiler Name="ForLoopVarUndef">True</Compiler>
- <Compiler Name="UnitNameMismatch">True</Compiler>
- <Compiler Name="NoCFGFileFound">True</Compiler>
- <Compiler Name="ImplicitVariants">True</Compiler>
- <Compiler Name="UnicodeToLocale">True</Compiler>
- <Compiler Name="LocaleToUnicode">True</Compiler>
- <Compiler Name="ImagebaseMultiple">True</Compiler>
- <Compiler Name="SuspiciousTypecast">True</Compiler>
- <Compiler Name="PrivatePropAccessor">True</Compiler>
- <Compiler Name="UnsafeType">False</Compiler>
- <Compiler Name="UnsafeCode">False</Compiler>
- <Compiler Name="UnsafeCast">False</Compiler>
- <Compiler Name="OptionTruncated">True</Compiler>
- <Compiler Name="WideCharReduced">True</Compiler>
- <Compiler Name="DuplicatesIgnored">True</Compiler>
- <Compiler Name="UnitInitSeq">True</Compiler>
- <Compiler Name="LocalPInvoke">True</Compiler>
- <Compiler Name="MessageDirective">True</Compiler>
- <Compiler Name="CodePage"></Compiler>
- </Compiler>
- <Linker>
- <Linker Name="MapFile">0</Linker>
- <Linker Name="OutputObjs">0</Linker>
- <Linker Name="GenerateHpps">False</Linker>
- <Linker Name="ConsoleApp">1</Linker>
- <Linker Name="DebugInfo">False</Linker>
- <Linker Name="RemoteSymbols">False</Linker>
- <Linker Name="GenerateDRC">False</Linker>
- <Linker Name="MinStackSize">16384</Linker>
- <Linker Name="MaxStackSize">1048576</Linker>
- <Linker Name="ImageBase">4194304</Linker>
- <Linker Name="ExeDescription"></Linker>
- </Linker>
- <Directories>
- <Directories Name="OutputDir"></Directories>
- <Directories Name="UnitOutputDir"></Directories>
- <Directories Name="PackageDLLOutputDir"></Directories>
- <Directories Name="PackageDCPOutputDir"></Directories>
- <Directories Name="SearchPath">../../../JEDI-SDL/SDL/Pas</Directories>
- <Directories Name="Packages"></Directories>
- <Directories Name="Conditionals"></Directories>
- <Directories Name="DebugSourceDirs"></Directories>
- <Directories Name="UsePackages">False</Directories>
- </Directories>
- <Parameters>
- <Parameters Name="RunParams"></Parameters>
- <Parameters Name="HostApplication"></Parameters>
- <Parameters Name="Launcher"></Parameters>
- <Parameters Name="UseLauncher">False</Parameters>
- <Parameters Name="DebugCWD"></Parameters>
- <Parameters Name="Debug Symbols Search Path"></Parameters>
- <Parameters Name="LoadAllSymbols">True</Parameters>
- <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
- </Parameters>
- <Language>
- <Language Name="ActiveLang"></Language>
- <Language Name="ProjectLang">$00000000</Language>
- <Language Name="RootDir"></Language>
- </Language>
- <VersionInfo>
- <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
- <VersionInfo Name="AutoIncBuild">False</VersionInfo>
- <VersionInfo Name="MajorVer">1</VersionInfo>
- <VersionInfo Name="MinorVer">0</VersionInfo>
- <VersionInfo Name="Release">0</VersionInfo>
- <VersionInfo Name="Build">0</VersionInfo>
- <VersionInfo Name="Debug">False</VersionInfo>
- <VersionInfo Name="PreRelease">False</VersionInfo>
- <VersionInfo Name="Special">False</VersionInfo>
- <VersionInfo Name="Private">False</VersionInfo>
- <VersionInfo Name="DLL">False</VersionInfo>
- <VersionInfo Name="Locale">1031</VersionInfo>
- <VersionInfo Name="CodePage">1252</VersionInfo>
- </VersionInfo>
- <VersionInfoKeys>
- <VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
- <VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
- <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
- <VersionInfoKeys Name="InternalName"></VersionInfoKeys>
- <VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
- <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
- <VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
- <VersionInfoKeys Name="ProductName"></VersionInfoKeys>
- <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
- <VersionInfoKeys Name="Comments"></VersionInfoKeys>
- </VersionInfoKeys>
- </Delphi.Personality>
-</BorlandProject>
diff --git a/src/lib/freetype/demo/nehe/lesson43.dpr b/src/lib/freetype/demo/nehe/lesson43.dpr deleted file mode 100644 index fe296fb5..00000000 --- a/src/lib/freetype/demo/nehe/lesson43.dpr +++ /dev/null @@ -1,289 +0,0 @@ -program lesson43; -(* - * This code was created by Jeff Molofee '99 - * (ported to Linux/SDL by Ti Leggett '01) - * - * If you've found this code useful, please let me know. - * - * Visit Jeff at http://nehe.gamedev.net/ - * - * or for port-specific comments, questions, bugreports etc. - * email to leggett@eecs.tulane.edu - *) - -{$IFDEF FPC} - {$mode delphi}{$H+} -{$ENDIF} - -{$APPTYPE Console} - -uses - moduleloader in '../../../JEDI-SDL/SDL/Pas/moduleloader.pas', - SDL in '../../../JEDI-SDL/SDL/Pas/sdl.pas', - gl in '../../../JEDI-SDL/OpenGL/Pas/gl.pas', - glu in '../../../JEDI-SDL/OpenGL/Pas/glu.pas', - ctypes in '../../../ctypes/ctypes.pas', - FreeType in '../../freetype.pas', - UFreeType in 'UFreeType.pas', - math, - sysutils; - -const - // screen width, height, and bit depth - SCREEN_WIDTH = 640; - SCREEN_HEIGHT = 480; - SCREEN_BPP = 16; - -var - our_font: TFontData; - // This is our SDL surface - surface: PSDL_Surface; - cnt1, cnt2: GLfloat; - -(* function to release/destroy our resources and restoring the old desktop *) -procedure Quit(returnCode: integer); -begin - // clean up the window - SDL_Quit( ); - - // and exit appropriately - Halt( returnCode ); -end; - -(* function to reset our viewport after a window resize *) -function resizeWindow(width: integer; height: integer): boolean; -var - // Height / width ration - ratio: GLfloat; -begin - // Protect against a divide by zero - if ( height = 0 ) then - height := 1; - - ratio := width / height; - - // Setup our viewport. - glViewport( 0, 0, GLsizei(width), GLsizei(height) ); - - // change to the projection matrix and set our viewing volume. - glMatrixMode( GL_PROJECTION ); - glLoadIdentity( ); - - // Set our perspective - gluPerspective( 45.0, ratio, 0.1, 100.0 ); - - // Make sure we're chaning the model view and not the projection - glMatrixMode( GL_MODELVIEW ); - - // Reset The View - glLoadIdentity( ); - - Result := true; -end; - -(* function to handle key press events *) -procedure handleKeyPress(keysym: PSDL_keysym); -begin - case ( keysym^.sym ) of - SDLK_ESCAPE: - begin - // ESC key was pressed - Quit( 0 ); - end; - SDLK_F1: - begin - // F1 key was pressed - // this toggles fullscreen mode - SDL_WM_ToggleFullScreen( surface ); - end; - end; -end; - -(* general OpenGL initialization function *) -function initGL(): boolean; -begin - // Enable smooth shading - glShadeModel( GL_SMOOTH ); - - // Set the background black - glClearColor( 0.0, 0.0, 0.0, 0.0 ); - - // Depth buffer setup - glClearDepth( 1.0 ); - - // Enables Depth Testing - glEnable( GL_DEPTH_TEST ); - - // The Type Of Depth Test To Do - glDepthFunc( GL_LEQUAL ); - - // Really Nice Perspective Calculations - glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); - - our_font := TFontData.Create('Test.ttf', 16); - - Result := true; -end; - -(* Here goes our drawing code *) -function drawGLScene(): boolean; -begin - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer - glLoadIdentity(); // Reset The Current Modelview Matrix - glTranslatef(0.0, 0.0, -1.0); // Move One Unit Into The Screen - - // Blue Text - glColor3ub(0, 0, $ff); - - // Position The WGL Text On The Screen - glRasterPos2f(-0.40, 0.35); - - // Here We Print Some Text Using Our FreeType Font - // The only really important command is the actual print() call, - // but for the sake of making the results a bit more interesting - // I have put in some code to rotate and scale the text. - - // Red text - glColor3ub($ff, 0, 0); - - glPushMatrix(); - glLoadIdentity(); - glRotatef(cnt1, 0, 0,1); - glScalef(1, 0.8 + 0.3*cos(cnt1/5) ,1); - glTranslatef(-180, 0, 0); - TFreeType.print(our_font, 320, 240, 'Active FreeType Text - ' + FloatToStr(cnt1)); - glPopMatrix(); - - //Uncomment this to test out print's ability to handle newlines. - //TFreeType.print(our_font, 320, 200, 'Here'#13'there'#13'be'#13#13'newlines'#13'.'); - - cnt1 := cnt1 + 0.051; // Increase The First Counter - cnt2 := cnt2 + 0.005; // Increase The First Counter - - SDL_GL_SwapBuffers( ); - - Result := true; -end; - -var - // Flags to pass to SDL_SetVideoMode - videoFlags: integer; - // main loop variable - done: boolean = false; - // used to collect events - event: TSDL_Event; - // this holds some info about our display - videoInfo: PSDL_VideoInfo; - // whether or not the window is active - isActive: boolean = true; - -begin - // initialize SDL - if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) then - begin - writeln( ErrOutput, 'Video initialization failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - // Fetch the video info - videoInfo := SDL_GetVideoInfo( ); - - if ( videoInfo = nil ) then - begin - writeln( ErrOutput, 'Video query failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // Enable double buffering - - // the flags to pass to SDL_SetVideoMode - videoFlags := SDL_OPENGL; // Enable OpenGL in SDL - videoFlags := videoFlags or SDL_HWPALETTE; // Store the palette in hardware - videoFlags := videoFlags or SDL_RESIZABLE; // Enable window resizing - - // This checks to see if surfaces can be stored in memory - if ( videoInfo^.hw_available <> 0 ) then - videoFlags := videoFlags or SDL_HWSURFACE - else - videoFlags := videoFlags or SDL_SWSURFACE; - - // This checks if hardware blits can be done - if ( videoInfo^.blit_hw <> 0 ) then - videoFlags := videoFlags or SDL_HWACCEL; - - // Sets up OpenGL double buffering - SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); - - // get a SDL surface - surface := SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, - videoFlags ); - - // Verify there is a surface - if ( surface = nil ) then - begin - writeln( ErrOutput, 'Video mode set failed: ' + SDL_GetError() ); - Quit( 1 ); - end; - - // initialize OpenGL - initGL(); - - // resize the initial window - resizeWindow( SCREEN_WIDTH, SCREEN_HEIGHT ); - - // wait for events - while ( not done ) do - begin - { handle the events in the queue } - - while ( SDL_PollEvent( @event ) <> 0 ) do - begin - case( event.type_ ) of - SDL_ACTIVEEVENT: - begin - // Something's happend with our focus - // If we are iconified, we shouldn't draw the screen - if ( (event.active.state and SDL_APPACTIVE) <> 0 ) then - begin - if ( event.active.gain = 0 ) then - isActive := false - else - isActive := true; - end; - end; - SDL_VIDEORESIZE: - begin - // handle resize event - {$IFDEF UNIX} - surface := SDL_SetVideoMode( event.resize.w, - event.resize.h, - 16, videoFlags ); - if ( surface = nil ) then - begin - writeln( ErrOutput, 'Could not get a surface after resize: ' + SDL_GetError( ) ); - Quit( 1 ); - end; - {$ENDIF} - resizeWindow( event.resize.w, event.resize.h ); - end; - SDL_KEYDOWN: - begin - // handle key presses - handleKeyPress( @event.key.keysym ); - end; - SDL_QUITEV: - begin - // handle quit requests - done := true; - end; - end; - end; - - // draw the scene - if ( isActive ) then - drawGLScene( ); - end; - - // clean ourselves up and exit - Quit( 0 ); -end. diff --git a/src/lib/freetype/demo/nehe/readme.txt b/src/lib/freetype/demo/nehe/readme.txt deleted file mode 100644 index 1186ef0e..00000000 --- a/src/lib/freetype/demo/nehe/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -Pascal conversion of the NeHe tutorial lesson 43 (Tutorial on using FreeType Fonts in OpenGL) -http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=43 - -Put the following DLLs into this directory: -- libfreetype-6.dll -- SDL.dll -- zlib1.dll - -and copy a TrueType font to this directory and rename it into "Test.ttf". diff --git a/src/lib/freetype/demo/switches.inc b/src/lib/freetype/demo/switches.inc deleted file mode 100644 index 0a940004..00000000 --- a/src/lib/freetype/demo/switches.inc +++ /dev/null @@ -1 +0,0 @@ -{$DEFINE FREETYPE_DEMO} diff --git a/src/lib/freetype/ftconfig.inc b/src/lib/freetype/ftconfig.inc deleted file mode 100644 index 100fb2e0..00000000 --- a/src/lib/freetype/ftconfig.inc +++ /dev/null @@ -1,35 +0,0 @@ -(***************************************************************************) -(* *) -(* ftconfig.h *) -(* *) -(* ANSI-specific configuration file (specification only). *) -(* *) -(* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007 by *) -(* David Turner, Robert Wilhelm, and Werner Lemberg. *) -(* *) -(* This file is part of the FreeType project, and may only be used, *) -(* modified, and distributed under the terms of the FreeType project *) -(* license, LICENSE.TXT. By continuing to use, modify, or distribute *) -(* this file you indicate that you have read the license and *) -(* understand and accept it fully. *) -(* *) -(***************************************************************************) -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* IntN types *) - (* *) - (* Used to guarantee the size of some specific integers. *) - (* *) - FT_Int16 = cint16; - FT_UInt16 = cuint16; - FT_Int32 = cint32; - FT_UInt32 = cuint32; - -{$ENDIF TYPE_DECL} - diff --git a/src/lib/freetype/ftglyph.inc b/src/lib/freetype/ftglyph.inc deleted file mode 100644 index 0d4acc99..00000000 --- a/src/lib/freetype/ftglyph.inc +++ /dev/null @@ -1,435 +0,0 @@ -(***************************************************************************) -(* *) -(* ftglyph.h *) -(* *) -(* FreeType convenience functions to handle glyphs (specification). *) -(* *) -(* Copyright 1996-2001, 2002, 2003, 2006 by *) -(* David Turner, Robert Wilhelm, and Werner Lemberg. *) -(* *) -(* This file is part of the FreeType project, and may only be used, *) -(* modified, and distributed under the terms of the FreeType project *) -(* license, LICENSE.TXT. By continuing to use, modify, or distribute *) -(* this file you indicate that you have read the license and *) -(* understand and accept it fully. *) -(* *) -(***************************************************************************) -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - - (*************************************************************************) - (* *) - (* This file contains the definition of several convenience functions *) - (* that can be used by client applications to easily retrieve glyph *) - (* bitmaps and outlines from a given face. *) - (* *) - (* These functions should be optional if you are writing a font server *) - (* or text layout engine on top of FreeType. However, they are pretty *) - (* handy for many other simple uses of the library. *) - (* *) - (*************************************************************************) - - (*************************************************************************) - (* *) - (* <Section> *) - (* glyph_management *) - (* *) - (* <Title> *) - (* Glyph Management *) - (* *) - (* <Abstract> *) - (* Generic interface to manage individual glyph data. *) - (* *) - (* <Description> *) - (* This section contains definitions used to manage glyph data *) - (* through generic FT_Glyph objects. Each of them can contain a *) - (* bitmap, a vector outline, or even images in other formats. *) - (* *) - (*************************************************************************) - -{$IFDEF TYPE_DECL} - - (* forward declaration to a private type *) - PFT_Glyph_Class = Pointer; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Glyph *) - (* *) - (* <Description> *) - (* Handle to an object used to model generic glyph images. It is a *) - (* pointer to the @FT_GlyphRec structure and can contain a glyph *) - (* bitmap or pointer. *) - (* *) - (* <Note> *) - (* Glyph objects are not owned by the library. You must thus release *) - (* them manually (through @FT_Done_Glyph) _before_ calling *) - (* @FT_Done_FreeType. *) - (* *) - FT_Glyph = ^FT_GlyphRec; - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_GlyphRec *) - (* *) - (* <Description> *) - (* The root glyph structure contains a given glyph image plus its *) - (* advance width in 16.16 fixed float format. *) - (* *) - (* <Fields> *) - (* library :: A handle to the FreeType library object. *) - (* *) - (* clazz :: A pointer to the glyph's class. Private. *) - (* *) - (* format :: The format of the glyph's image. *) - (* *) - (* advance :: A 16.16 vector that gives the glyph's advance width. *) - (* *) - FT_GlyphRec = record - library_: FT_Library; - clazz: PFT_Glyph_Class; - format: FT_Glyph_Format; - advance: FT_Vector; - end; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_BitmapGlyph *) - (* *) - (* <Description> *) - (* A handle to an object used to model a bitmap glyph image. This is *) - (* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. *) - (* *) - FT_BitmapGlyph = ^FT_BitmapGlyphRec; - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_BitmapGlyphRec *) - (* *) - (* <Description> *) - (* A structure used for bitmap glyph images. This really is a *) - (* `sub-class' of `FT_GlyphRec'. *) - (* *) - (* <Fields> *) - (* root :: The root FT_Glyph fields. *) - (* *) - (* left :: The left-side bearing, i.e., the horizontal distance *) - (* from the current pen position to the left border of the *) - (* glyph bitmap. *) - (* *) - (* top :: The top-side bearing, i.e., the vertical distance from *) - (* the current pen position to the top border of the glyph *) - (* bitmap. This distance is positive for upwards-y! *) - (* *) - (* bitmap :: A descriptor for the bitmap. *) - (* *) - (* <Note> *) - (* You can typecast FT_Glyph to FT_BitmapGlyph if you have *) - (* glyph->format == FT_GLYPH_FORMAT_BITMAP. This lets you access *) - (* the bitmap's contents easily. *) - (* *) - (* The corresponding pixel buffer is always owned by the BitmapGlyph *) - (* and is thus created and destroyed with it. *) - (* *) - FT_BitmapGlyphRec = record - root: FT_GlyphRec; - left: FT_Int; - top: FT_Int; - bitmap: FT_Bitmap; - end; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_OutlineGlyph *) - (* *) - (* <Description> *) - (* A handle to an object used to model an outline glyph image. This *) - (* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. *) - (* *) - FT_OutlineGlyph = ^FT_OutlineGlyphRec; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_OutlineGlyphRec *) - (* *) - (* <Description> *) - (* A structure used for outline (vectorial) glyph images. This *) - (* really is a `sub-class' of `FT_GlyphRec'. *) - (* *) - (* <Fields> *) - (* root :: The root FT_Glyph fields. *) - (* *) - (* outline :: A descriptor for the outline. *) - (* *) - (* <Note> *) - (* You can typecast FT_Glyph to FT_OutlineGlyph if you have *) - (* glyph->format == FT_GLYPH_FORMAT_OUTLINE. This lets you access *) - (* the outline's content easily. *) - (* *) - (* As the outline is extracted from a glyph slot, its coordinates are *) - (* expressed normally in 26.6 pixels, unless the flag *) - (* FT_LOAD_NO_SCALE was used in FT_Load_Glyph() or FT_Load_Char(). *) - (* *) - (* The outline's tables are always owned by the object and are *) - (* destroyed with it. *) - (* *) - FT_OutlineGlyphRec = record - root: FT_GlyphRec; - outline: FT_Outline; - end; - -{$ELSE TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Get_Glyph *) - (* *) - (* <Description> *) - (* A function used to extract a glyph image from a slot. *) - (* *) - (* <Input> *) - (* slot :: A handle to the source glyph slot. *) - (* *) - (* <Output> *) - (* aglyph :: A handle to the glyph object. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - function FT_Get_Glyph( - slot: FT_GlyphSlot; - out aglyph: FT_Glyph ): FT_Error; - cdecl; external ft_lib name 'FT_Get_Glyph'; - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Glyph_Copy *) - (* *) - (* <Description> *) - (* A function used to copy a glyph image. Note that the created *) - (* @FT_Glyph object must be released with @FT_Done_Glyph. *) - (* *) - (* <Input> *) - (* source :: A handle to the source glyph object. *) - (* *) - (* <Output> *) - (* target :: A handle to the target glyph object. 0~in case of *) - (* error. *) - (* *) - (* <Return> *) - (* FreeType error code. 0~means success. *) - (* *) - function FT_Glyph_Copy(source: FT_Glyph; - var target: FT_Glyph ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_Copy'; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Enum> *) - (* FT_Glyph_BBox_Mode *) - (* *) - (* <Description> *) - (* The mode how the values of @FT_Glyph_Get_CBox are returned. *) - (* *) - (* <Values> *) - (* FT_GLYPH_BBOX_UNSCALED :: *) - (* Return unscaled font units. *) - (* *) - (* FT_GLYPH_BBOX_SUBPIXELS :: *) - (* Return unfitted 26.6 coordinates. *) - (* *) - (* FT_GLYPH_BBOX_GRIDFIT :: *) - (* Return grid-fitted 26.6 coordinates. *) - (* *) - (* FT_GLYPH_BBOX_TRUNCATE :: *) - (* Return coordinates in integer pixels. *) - (* *) - (* FT_GLYPH_BBOX_PIXELS :: *) - (* Return grid-fitted pixel coordinates. *) - (* *) - FT_Glyph_BBox_Mode = cint; -{$ELSE TYPE_DECL} -const - FT_GLYPH_BBOX_UNSCALED = 0; - FT_GLYPH_BBOX_SUBPIXELS = 0; - FT_GLYPH_BBOX_GRIDFIT = 1; - FT_GLYPH_BBOX_TRUNCATE = 2; - FT_GLYPH_BBOX_PIXELS = 3; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Glyph_Get_CBox *) - (* *) - (* <Description> *) - (* Return a glyph's `control box'. The control box encloses all the *) - (* outline's points, including Bzier control points. Though it *) - (* coincides with the exact bounding box for most glyphs, it can be *) - (* slightly larger in some situations (like when rotating an outline *) - (* which contains Bzier outside arcs). *) - (* *) - (* Computing the control box is very fast, while getting the bounding *) - (* box can take much more time as it needs to walk over all segments *) - (* and arcs in the outline. To get the latter, you can use the *) - (* `ftbbox' component which is dedicated to this single task. *) - (* *) - (* <Input> *) - (* glyph :: A handle to the source glyph object. *) - (* *) - (* mode :: The mode which indicates how to interpret the returned *) - (* bounding box values. *) - (* *) - (* <Output> *) - (* acbox :: The glyph coordinate bounding box. Coordinates are *) - (* expressed in 1/64th of pixels if it is grid-fitted. *) - (* *) - (* <Note> *) - (* Coordinates are relative to the glyph origin, using the Y-upwards *) - (* convention. *) - (* *) - (* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' *) - (* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font *) - (* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS *) - (* is another name for this constant. *) - (* *) - (* Note that the maximum coordinates are exclusive, which means that *) - (* one can compute the width and height of the glyph image (be it in *) - (* integer or 26.6 pixels) as: *) - (* *) - (* { *) - (* width = bbox.xMax - bbox.xMin; *) - (* height = bbox.yMax - bbox.yMin; *) - (* } *) - (* *) - (* Note also that for 26.6 coordinates, if `bbox_mode' is set to *) - (* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, *) - (* which corresponds to: *) - (* *) - (* { *) - (* bbox.xMin = FLOOR(bbox.xMin); *) - (* bbox.yMin = FLOOR(bbox.yMin); *) - (* bbox.xMax = CEILING(bbox.xMax); *) - (* bbox.yMax = CEILING(bbox.yMax); *) - (* } *) - (* *) - (* To get the bbox in pixel coordinates, set `bbox_mode' to *) - (* @FT_GLYPH_BBOX_TRUNCATE. *) - (* *) - (* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' *) - (* to @FT_GLYPH_BBOX_PIXELS. *) - (* *) - procedure FT_Glyph_Get_CBox( glyph: FT_Glyph; - bbox_mode: FT_UInt; - out acbox: FT_BBox ); - cdecl; external ft_lib name 'FT_Glyph_Get_CBox'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Glyph_To_Bitmap *) - (* *) - (* <Description> *) - (* Converts a given glyph object to a bitmap glyph object. *) - (* *) - (* <InOut> *) - (* the_glyph :: A pointer to a handle to the target glyph. *) - (* *) - (* <Input> *) - (* render_mode :: An enumeration that describe how the data is *) - (* rendered. *) - (* *) - (* origin :: A pointer to a vector used to translate the glyph *) - (* image before rendering. Can be 0 (if no *) - (* translation). The origin is expressed in *) - (* 26.6 pixels. *) - (* *) - (* destroy :: A boolean that indicates that the original glyph *) - (* image should be destroyed by this function. It is *) - (* never destroyed in case of error. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* The glyph image is translated with the `origin' vector before *) - (* rendering. *) - (* *) - (* The first parameter is a pointer to a FT_Glyph handle, that will *) - (* be replaced by this function. Typically, you would use (omitting *) - (* error handling): *) - (* *) - (* *) - (* { *) - (* FT_Glyph glyph; *) - (* FT_BitmapGlyph glyph_bitmap; *) - (* *) - (* *) - (* // load glyph *) - (* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); *) - (* *) - (* // extract glyph image *) - (* error = FT_Get_Glyph( face->glyph, &glyph ); *) - (* *) - (* // convert to a bitmap (default render mode + destroy old) *) - (* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) *) - (* { *) - (* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, *) - (* 0, 1 ); *) - (* if ( error ) // glyph unchanged *) - (* ... *) - (* } *) - (* *) - (* // access bitmap content by typecasting *) - (* glyph_bitmap = (FT_BitmapGlyph)glyph; *) - (* *) - (* // do funny stuff with it, like blitting/drawing *) - (* ... *) - (* *) - (* // discard glyph image (bitmap or not) *) - (* FT_Done_Glyph( glyph ); *) - (* } *) - (* *) - (* *) - (* This function does nothing if the glyph format isn't scalable. *) - (* *) - function FT_Glyph_To_Bitmap(var the_glyph: FT_Glyph; - render_mode: FT_Render_Mode; - origin: PFT_Vector; - destroy: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_To_Bitmap'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Done_Glyph *) - (* *) - (* <Description> *) - (* Destroys a given glyph. *) - (* *) - (* <Input> *) - (* glyph :: A handle to the target glyph object. *) - (* *) - procedure FT_Done_Glyph( glyph: FT_Glyph ); - cdecl; external ft_lib name 'FT_Done_Glyph'; - -{$ENDIF TYPE_DECL} diff --git a/src/lib/freetype/ftimage.inc b/src/lib/freetype/ftimage.inc deleted file mode 100644 index 9255c422..00000000 --- a/src/lib/freetype/ftimage.inc +++ /dev/null @@ -1,803 +0,0 @@ -(***************************************************************************) -(* *) -(* ftimage.h *) -(* *) -(* FreeType glyph image formats and default raster interface *) -(* (specification). *) -(* *) -(* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by *) -(* David Turner, Robert Wilhelm, and Werner Lemberg. *) -(* *) -(* This file is part of the FreeType project, and may only be used, *) -(* modified, and distributed under the terms of the FreeType project *) -(* license, LICENSE.TXT. By continuing to use, modify, or distribute *) -(* this file you indicate that you have read the license and *) -(* understand and accept it fully. *) -(* *) -(***************************************************************************) -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - (*************************************************************************) - (* *) - (* Note: A `raster' is simply a scan-line converter, used to render *) - (* FT_Outlines into FT_Bitmaps. *) - (* *) - (*************************************************************************) - -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Pos *) - (* *) - (* <Description> *) - (* The type FT_Pos is a 32-bit integer used to store vectorial *) - (* coordinates. Depending on the context, these can represent *) - (* distances in integer font units, or 16,16, or 26.6 fixed float *) - (* pixel coordinates. *) - (* *) - FT_Pos = cslong; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Vector *) - (* *) - (* <Description> *) - (* A simple structure used to store a 2D vector; coordinates are of *) - (* the FT_Pos type. *) - (* *) - (* <Fields> *) - (* x :: The horizontal coordinate. *) - (* y :: The vertical coordinate. *) - (* *) - PFT_Vector = ^FT_Vector; - FT_Vector = record - x , - y : FT_Pos; - end; - - PFT_VectorArray = ^FT_VectorArray; - FT_VectorArray = array[0 .. (MaxInt div SizeOf(FT_Vector))-1] of FT_Vector; - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_BBox *) - (* *) - (* <Description> *) - (* A structure used to hold an outline's bounding box, i.e., the *) - (* coordinates of its extrema in the horizontal and vertical *) - (* directions. *) - (* *) - (* <Fields> *) - (* xMin :: The horizontal minimum (left-most). *) - (* *) - (* yMin :: The vertical minimum (bottom-most). *) - (* *) - (* xMax :: The horizontal maximum (right-most). *) - (* *) - (* yMax :: The vertical maximum (top-most). *) - (* *) - PFT_BBox = ^FT_BBox; - FT_BBox = record - xMin, yMin : FT_Pos; - xMax, yMax : FT_Pos; - end; - - - (*************************************************************************) - (* *) - (* <Enum> *) - (* FT_Pixel_Mode *) - (* *) - (* <Description> *) - (* An enumeration type used to describe the format of pixels in a *) - (* given bitmap. Note that additional formats may be added in the *) - (* future. *) - (* *) - (* <Values> *) - (* FT_PIXEL_MODE_NONE :: *) - (* Value 0 is reserved. *) - (* *) - (* FT_PIXEL_MODE_MONO :: *) - (* A monochrome bitmap, using 1 bit per pixel. Note that pixels *) - (* are stored in most-significant order (MSB), which means that *) - (* the left-most pixel in a byte has value 128. *) - (* *) - (* FT_PIXEL_MODE_GRAY :: *) - (* An 8-bit bitmap, generally used to represent anti-aliased glyph *) - (* images. Each pixel is stored in one byte. Note that the number *) - (* of value `gray' levels is stored in the `num_bytes' field of *) - (* the @FT_Bitmap structure (it generally is 256). *) - (* *) - (* FT_PIXEL_MODE_GRAY2 :: *) - (* A 2-bit/pixel bitmap, used to represent embedded anti-aliased *) - (* bitmaps in font files according to the OpenType specification. *) - (* We haven't found a single font using this format, however. *) - (* *) - (* FT_PIXEL_MODE_GRAY4 :: *) - (* A 4-bit/pixel bitmap, used to represent embedded anti-aliased *) - (* bitmaps in font files according to the OpenType specification. *) - (* We haven't found a single font using this format, however. *) - (* *) - (* FT_PIXEL_MODE_LCD :: *) - (* An 8-bit bitmap, used to represent RGB or BGR decimated glyph *) - (* images used for display on LCD displays; the bitmap is three *) - (* times wider than the original glyph image. See also *) - (* @FT_RENDER_MODE_LCD. *) - (* *) - (* FT_PIXEL_MODE_LCD_V :: *) - (* An 8-bit bitmap, used to represent RGB or BGR decimated glyph *) - (* images used for display on rotated LCD displays; the bitmap *) - (* is three times taller than the original glyph image. See also *) - (* @FT_RENDER_MODE_LCD_V. *) - (* *) - FT_Pixel_Mode = cint; -{$ELSE TYPE_DECL} -const - FT_PIXEL_MODE_NONE = 0; - FT_PIXEL_MODE_MONO = FT_PIXEL_MODE_NONE + 1; - FT_PIXEL_MODE_GRAY = FT_PIXEL_MODE_MONO + 1; - FT_PIXEL_MODE_GRAY2 = FT_PIXEL_MODE_GRAY + 1; - FT_PIXEL_MODE_GRAY4 = FT_PIXEL_MODE_GRAY2 + 1; - FT_PIXEL_MODE_LCD = FT_PIXEL_MODE_GRAY4 + 1; - FT_PIXEL_MODE_LCD_V = FT_PIXEL_MODE_LCD + 1; - - FT_PIXEL_MODE_MAX = FT_PIXEL_MODE_LCD_V + 1; (* do not remove *) -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Bitmap *) - (* *) - (* <Description> *) - (* A structure used to describe a bitmap or pixmap to the raster. *) - (* Note that we now manage pixmaps of various depths through the *) - (* `pixel_mode' field. *) - (* *) - (* <Fields> *) - (* rows :: The number of bitmap rows. *) - (* *) - (* width :: The number of pixels in bitmap row. *) - (* *) - (* pitch :: The pitch's absolute value is the number of bytes *) - (* taken by one bitmap row, including padding. *) - (* However, the pitch is positive when the bitmap has *) - (* a `down' flow, and negative when it has an `up' *) - (* flow. In all cases, the pitch is an offset to add *) - (* to a bitmap pointer in order to go down one row. *) - (* *) - (* buffer :: A typeless pointer to the bitmap buffer. This *) - (* value should be aligned on 32-bit boundaries in *) - (* most cases. *) - (* *) - (* num_grays :: This field is only used with *) - (* `FT_PIXEL_MODE_GRAY'; it gives the number of gray *) - (* levels used in the bitmap. *) - (* *) - (* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. *) - (* See @FT_Pixel_Mode for possible values. *) - (* *) - (* palette_mode :: This field is only used with paletted pixel modes; *) - (* it indicates how the palette is stored. *) - (* *) - (* palette :: A typeless pointer to the bitmap palette; only *) - (* used for paletted pixel modes. *) - (* *) - (* <Note> *) - (* For now, the only pixel mode supported by FreeType are mono and *) - (* grays. However, drivers might be added in the future to support *) - (* more `colorful' options. *) - (* *) - (* When using pixel modes pal2, pal4 and pal8 with a void `palette' *) - (* field, a gray pixmap with respectively 4, 16, and 256 levels of *) - (* gray is assumed. This, in order to be compatible with some *) - (* embedded bitmap formats defined in the TrueType specification. *) - (* *) - (* Note that no font was found presenting such embedded bitmaps, so *) - (* this is currently completely unhandled by the library. *) - (* *) - PFT_Bitmap = ^FT_Bitmap; - FT_Bitmap = record - rows: FT_Int; - width: FT_Int; - pitch: FT_Int; - buffer: PByteArray; - num_grays: FT_Short; - pixel_mode: byte; - palette_mode: byte; - palette: pointer; - end; - - - (*************************************************************************) - (* *) - (* <Section> *) - (* outline_processing *) - (* *) - (*************************************************************************) - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Outline *) - (* *) - (* <Description> *) - (* This structure is used to describe an outline to the scan-line *) - (* converter. *) - (* *) - (* <Fields> *) - (* n_contours :: The number of contours in the outline. *) - (* *) - (* n_points :: The number of points in the outline. *) - (* *) - (* points :: A pointer to an array of `n_points' FT_Vector *) - (* elements, giving the outline's point coordinates. *) - (* *) - (* tags :: A pointer to an array of `n_points' chars, giving *) - (* each outline point's type. If bit 0 is unset, the *) - (* point is `off' the curve, i.e. a Bezier control *) - (* point, while it is `on' when set. *) - (* *) - (* Bit 1 is meaningful for `off' points only. If set, *) - (* it indicates a third-order Bezier arc control point; *) - (* and a second-order control point if unset. *) - (* *) - (* contours :: An array of `n_contours' shorts, giving the end *) - (* point of each contour within the outline. For *) - (* example, the first contour is defined by the points *) - (* `0' to `contours[0]', the second one is defined by *) - (* the points `contours[0]+1' to `contours[1]', etc. *) - (* *) - (* flags :: A set of bit flags used to characterize the outline *) - (* and give hints to the scan-converter and hinter on *) - (* how to convert/grid-fit it. See FT_Outline_Flags. *) - (* *) - PFT_Outline = ^FT_Outline; - FT_Outline = record - n_contours: FT_Short; (* number of contours in glyph *) - n_points: FT_Short; (* number of points in the glyph *) - - points: PFT_VectorArray; (* the outline's points *) - tags: PByteArray; (* the points flags *) - contours: PFT_ShortArray; (* the contour end points *) - - flags: FT_Int; (* outline masks *) - end; - -{$ELSE TYPE_DECL} - - (*************************************************************************) - (* *) - (* @macro: *) - (* FT_CURVE_TAG ( flag ) *) - (* *) - function FT_CURVE_TAG(flag: byte): byte; - -const - FT_CURVE_TAG_ON = 1; - FT_CURVE_TAG_CONIC = 0; - FT_CURVE_TAG_CUBIC = 2; - - FT_CURVE_TAG_TOUCH_X = 8; // reserved for the TrueType hinter - FT_CURVE_TAG_TOUCH_Y = 16; // reserved for the TrueType hinter - - FT_CURVE_TAG_TOUCH_BOTH = ( FT_CURVE_TAG_TOUCH_X or - FT_CURVE_TAG_TOUCH_Y ); -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Outline_MoveToFunc *) - (* *) - (* <Description> *) - (* A function pointer type used to describe the signature of a `move *) - (* to' function during outline walking/decomposition. *) - (* *) - (* A `move to' is emitted to start a new contour in an outline. *) - (* *) - (* <Input> *) - (* to :: A pointer to the target point of the `move to'. *) - (* *) - (* user :: A typeless pointer which is passed from the caller of the *) - (* decomposition function. *) - (* *) - (* <Return> *) - (* Error code. 0 means success. *) - (* *) - FT_Outline_MoveToFunc = function(to_: {const} PFT_Vector; - user: Pointer): cint; cdecl; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Outline_LineToFunc *) - (* *) - (* <Description> *) - (* A function pointer type used to describe the signature of a `line *) - (* to' function during outline walking/decomposition. *) - (* *) - (* A `line to' is emitted to indicate a segment in the outline. *) - (* *) - (* <Input> *) - (* to :: A pointer to the target point of the `line to'. *) - (* *) - (* user :: A typeless pointer which is passed from the caller of the *) - (* decomposition function. *) - (* *) - (* <Return> *) - (* Error code. 0 means success. *) - (* *) - FT_Outline_LineToFunc = function(to_: {const} PFT_Vector; - user: Pointer): cint; cdecl; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Outline_ConicToFunc *) - (* *) - (* <Description> *) - (* A function pointer type use to describe the signature of a `conic *) - (* to' function during outline walking/decomposition. *) - (* *) - (* A `conic to' is emitted to indicate a second-order Bzier arc in *) - (* the outline. *) - (* *) - (* <Input> *) - (* control :: An intermediate control point between the last position *) - (* and the new target in `to'. *) - (* *) - (* to :: A pointer to the target end point of the conic arc. *) - (* *) - (* user :: A typeless pointer which is passed from the caller of *) - (* the decomposition function. *) - (* *) - (* <Return> *) - (* Error code. 0 means success. *) - (* *) - FT_Outline_ConicToFunc = function(control: {const} PFT_Vector; - to_: {const} PFT_Vector; - user: Pointer): cint; cdecl; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Outline_CubicToFunc *) - (* *) - (* <Description> *) - (* A function pointer type used to describe the signature of a `cubic *) - (* to' function during outline walking/decomposition. *) - (* *) - (* A `cubic to' is emitted to indicate a third-order Bzier arc. *) - (* *) - (* <Input> *) - (* control1 :: A pointer to the first Bzier control point. *) - (* *) - (* control2 :: A pointer to the second Bzier control point. *) - (* *) - (* to :: A pointer to the target end point. *) - (* *) - (* user :: A typeless pointer which is passed from the caller of *) - (* the decomposition function. *) - (* *) - (* <Return> *) - (* Error code. 0 means success. *) - (* *) - FT_Outline_CubicToFunc = function( control1: {const} PFT_Vector; - control2: {const} PFT_Vector; - to_: {const} PFT_Vector; - user: Pointer ): cint; cdecl; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Outline_Funcs *) - (* *) - (* <Description> *) - (* A structure to hold various function pointers used during outline *) - (* decomposition in order to emit segments, conic, and cubic Bziers, *) - (* as well as `move to' and `close to' operations. *) - (* *) - (* <Fields> *) - (* move_to :: The `move to' emitter. *) - (* *) - (* line_to :: The segment emitter. *) - (* *) - (* conic_to :: The second-order Bzier arc emitter. *) - (* *) - (* cubic_to :: The third-order Bzier arc emitter. *) - (* *) - (* shift :: The shift that is applied to coordinates before they *) - (* are sent to the emitter. *) - (* *) - (* delta :: The delta that is applied to coordinates before they *) - (* are sent to the emitter, but after the shift. *) - (* *) - (* <Note> *) - (* The point coordinates sent to the emitters are the transformed *) - (* version of the original coordinates (this is important for high *) - (* accuracy during scan-conversion). The transformation is simple: *) - (* *) - (* { *) - (* x' = (x << shift) - delta *) - (* y' = (x << shift) - delta *) - (* } *) - (* *) - (* Set the value of `shift' and `delta' to 0 to get the original *) - (* point coordinates. *) - (* *) - PFT_Outline_Funcs = ^FT_Outline_Funcs; - FT_Outline_Funcs = record - move_to: FT_Outline_MoveToFunc; - line_to: FT_Outline_LineToFunc; - conic_to: FT_Outline_ConicToFunc; - cubic_to: FT_Outline_CubicToFunc; - - shift: cint; - delta: FT_Pos; - end; - - - (*************************************************************************) - (* *) - (* <Enum> *) - (* FT_Glyph_Format *) - (* *) - (* <Description> *) - (* An enumeration type used to describe the format of a given glyph *) - (* image. Note that this version of FreeType only supports two image *) - (* formats, even though future font drivers will be able to register *) - (* their own format. *) - (* *) - (* <Values> *) - (* FT_GLYPH_FORMAT_NONE :: *) - (* The value 0 is reserved and does describe a glyph format. *) - (* *) - (* FT_GLYPH_FORMAT_COMPOSITE :: *) - (* The glyph image is a composite of several other images. This *) - (* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to *) - (* report compound glyphs (like accented characters). *) - (* *) - (* FT_GLYPH_FORMAT_BITMAP :: *) - (* The glyph image is a bitmap, and can be described as an *) - (* @FT_Bitmap. You generally need to access the `bitmap' field of *) - (* the @FT_GlyphSlotRec structure to read it. *) - (* *) - (* FT_GLYPH_FORMAT_OUTLINE :: *) - (* The glyph image is a vertorial outline made of line segments *) - (* and Bezier arcs; it can be described as an @FT_Outline; you *) - (* generally want to access the `outline' field of the *) - (* @FT_GlyphSlotRec structure to read it. *) - (* *) - (* FT_GLYPH_FORMAT_PLOTTER :: *) - (* The glyph image is a vectorial path with no inside/outside *) - (* contours. Some Type 1 fonts, like those in the Hershey family, *) - (* contain glyphs in this format. These are described as *) - (* @FT_Outline, but FreeType isn't currently capable of rendering *) - (* them correctly. *) - (* *) - FT_Glyph_Format = array[0..3] of char; -{$ELSE TYPE_DECL} -const - FT_GLYPH_FORMAT_NONE: FT_Glyph_Format = (#0, #0, #0, #0 ); - - FT_GLYPH_FORMAT_COMPOSITE: FT_Glyph_Format = ('c', 'o', 'm', 'p' ); - FT_GLYPH_FORMAT_BITMAP: FT_Glyph_Format = ('b', 'i', 't', 's' ); - FT_GLYPH_FORMAT_OUTLINE: FT_Glyph_Format = ('o', 'u', 't', 'l' ); - FT_GLYPH_FORMAT_PLOTTER: FT_Glyph_Format = ('p', 'l', 'o', 't' ); - -{$ENDIF TYPE_DECL} - - (*************************************************************************) - (*************************************************************************) - (*************************************************************************) - (***** *****) - (***** R A S T E R D E F I N I T I O N S *****) - (***** *****) - (*************************************************************************) - (*************************************************************************) - (*************************************************************************) - - - (*************************************************************************) - (* *) - (* A raster is a scan converter, in charge of rendering an outline into *) - (* a a bitmap. This section contains the public API for rasters. *) - (* *) - (* Note that in FreeType 2, all rasters are now encapsulated within *) - (* specific modules called `renderers'. See `freetype/ftrender.h' for *) - (* more details on renderers. *) - (* *) - (*************************************************************************) - - - (*************************************************************************) - (* *) - (* <Section> *) - (* raster *) - (* *) - (* <Title> *) - (* Scanline Converter *) - (* *) - (* <Abstract> *) - (* How vectorial outlines are converted into bitmaps and pixmaps. *) - (* *) - (* <Description> *) - (* This section contains technical definitions. *) - (* *) - (*************************************************************************) - -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Raster *) - (* *) - (* <Description> *) - (* A handle (pointer) to a raster object. Each object can be used *) - (* independently to convert an outline into a bitmap or pixmap. *) - (* *) - FT_Raster = Pointer; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Span *) - (* *) - (* <Description> *) - (* A structure used to model a single span of gray (or black) pixels *) - (* when rendering a monochrome or anti-aliased bitmap. *) - (* *) - (* <Fields> *) - (* x :: The span's horizontal start position. *) - (* *) - (* len :: The span's length in pixels. *) - (* *) - (* coverage :: The span color/coverage, ranging from 0 (background) *) - (* to 255 (foreground). Only used for anti-aliased *) - (* rendering. *) - (* *) - (* <Note> *) - (* This structure is used by the span drawing callback type named *) - (* @FT_SpanFunc which takes the y-coordinate of the span as a *) - (* a parameter. *) - (* *) - (* The coverage value is always between 0 and 255. *) - (* *) - PFT_Span = ^FT_Span; - FT_Span = record - x: cshort; - len: cushort; - coverage: cuchar; - end; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_SpanFunc *) - (* *) - (* <Description> *) - (* A function used as a call-back by the anti-aliased renderer in *) - (* order to let client applications draw themselves the gray pixel *) - (* spans on each scan line. *) - (* *) - (* <Input> *) - (* y :: The scanline's y-coordinate. *) - (* *) - (* count :: The number of spans to draw on this scanline. *) - (* *) - (* spans :: A table of `count' spans to draw on the scanline. *) - (* *) - (* user :: User-supplied data that is passed to the callback. *) - (* *) - (* <Note> *) - (* This callback allows client applications to directly render the *) - (* gray spans of the anti-aliased bitmap to any kind of surfaces. *) - (* *) - (* This can be used to write anti-aliased outlines directly to a *) - (* given background bitmap, and even perform translucency. *) - (* *) - (* Note that the `count' field cannot be greater than a fixed value *) - (* defined by the `FT_MAX_GRAY_SPANS' configuration macro in *) - (* `ftoption.h'. By default, this value is set to 32, which means *) - (* that if there are more than 32 spans on a given scanline, the *) - (* callback is called several times with the same `y' parameter in *) - (* order to draw all callbacks. *) - (* *) - (* Otherwise, the callback is only called once per scan-line, and *) - (* only for those scanlines that do have `gray' pixels on them. *) - (* *) - FT_SpanFunc = procedure(y: cint; - count: cint; - spans: {const} PFT_Span; - user: Pointer ); cdecl; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Raster_BitTest_Func *) - (* *) - (* <Description> *) - (* THIS TYPE IS DEPRECATED. DO NOT USE IT. *) - (* *) - (* A function used as a call-back by the monochrome scan-converter *) - (* to test whether a given target pixel is already set to the drawing *) - (* `color'. These tests are crucial to implement drop-out control *) - (* per-se the TrueType spec. *) - (* *) - (* <Input> *) - (* y :: The pixel's y-coordinate. *) - (* *) - (* x :: The pixel's x-coordinate. *) - (* *) - (* user :: User-supplied data that is passed to the callback. *) - (* *) - (* <Return> *) - (* 1 if the pixel is `set', 0 otherwise. *) - (* *) - FT_Raster_BitTest_Func = function(y: cint; - x: cint; - user: Pointer): cint; cdecl; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Raster_BitSet_Func *) - (* *) - (* <Description> *) - (* THIS TYPE IS DEPRECATED. DO NOT USE IT. *) - (* *) - (* A function used as a call-back by the monochrome scan-converter *) - (* to set an individual target pixel. This is crucial to implement *) - (* drop-out control according to the TrueType specification. *) - (* *) - (* <Input> *) - (* y :: The pixel's y-coordinate. *) - (* *) - (* x :: The pixel's x-coordinate. *) - (* *) - (* user :: User-supplied data that is passed to the callback. *) - (* *) - (* <Return> *) - (* 1 if the pixel is `set', 0 otherwise. *) - (* *) - FT_Raster_BitSet_Func = procedure(y: cint; - x: cint; - user: Pointer ); cdecl; - - - (*************************************************************************) - (* *) - (* <Enum> *) - (* FT_RASTER_FLAG_XXX *) - (* *) - (* <Description> *) - (* A list of bit flag constants as used in the `flags' field of a *) - (* @FT_Raster_Params structure. *) - (* *) - (* <Values> *) - (* FT_RASTER_FLAG_DEFAULT :: This value is 0. *) - (* *) - (* FT_RASTER_FLAG_AA :: This flag is set to indicate that an *) - (* anti-aliased glyph image should be *) - (* generated. Otherwise, it will be *) - (* monochrome (1-bit). *) - (* *) - (* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct *) - (* rendering. In this mode, client *) - (* applications must provide their own span *) - (* callback. This lets them directly *) - (* draw or compose over an existing bitmap. *) - (* If this bit is not set, the target *) - (* pixmap's buffer _must_ be zeroed before *) - (* rendering. *) - (* *) - (* Note that for now, direct rendering is *) - (* only possible with anti-aliased glyphs. *) - (* *) - (* FT_RASTER_FLAG_CLIP :: This flag is only used in direct *) - (* rendering mode. If set, the output will *) - (* be clipped to a box specified in the *) - (* `clip_box' field of the *) - (* @FT_Raster_Params structure. *) - (* *) - (* Note that by default, the glyph bitmap *) - (* is clipped to the target pixmap, except *) - (* in direct rendering mode where all spans *) - (* are generated if no clipping box is set. *) - (* *) -{$ELSE TYPE_DECL} -const - FT_RASTER_FLAG_DEFAULT = $0; - FT_RASTER_FLAG_AA = $1; - FT_RASTER_FLAG_DIRECT = $2; - FT_RASTER_FLAG_CLIP = $4; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Raster_Params *) - (* *) - (* <Description> *) - (* A structure to hold the arguments used by a raster's render *) - (* function. *) - (* *) - (* <Fields> *) - (* target :: The target bitmap. *) - (* *) - (* source :: A pointer to the source glyph image (e.g., an *) - (* @FT_Outline). *) - (* *) - (* flags :: The rendering flags. *) - (* *) - (* gray_spans :: The gray span drawing callback. *) - (* *) - (* black_spans :: The black span drawing callback. *) - (* *) - (* bit_test :: The bit test callback. UNIMPLEMENTED! *) - (* *) - (* bit_set :: The bit set callback. UNIMPLEMENTED! *) - (* *) - (* user :: User-supplied data that is passed to each drawing *) - (* callback. *) - (* *) - (* clip_box :: An optional clipping box. It is only used in *) - (* direct rendering mode. Note that coordinates here *) - (* should be expressed in _integer_ pixels (and not in *) - (* 26.6 fixed-point units). *) - (* *) - (* <Note> *) - (* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA *) - (* bit flag is set in the `flags' field, otherwise a monochrome *) - (* bitmap is generated. *) - (* *) - (* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the *) - (* raster will call the `gray_spans' callback to draw gray pixel *) - (* spans, in the case of an aa glyph bitmap, it will call *) - (* `black_spans', and `bit_test' and `bit_set' in the case of a *) - (* monochrome bitmap. This allows direct composition over a *) - (* pre-existing bitmap through user-provided callbacks to perform the *) - (* span drawing/composition. *) - (* *) - (* Note that the `bit_test' and `bit_set' callbacks are required when *) - (* rendering a monochrome bitmap, as they are crucial to implement *) - (* correct drop-out control as defined in the TrueType specification. *) - (* *) - PFT_Raster_Params = ^FT_Raster_Params; - FT_Raster_Params = record - target: {const} PFT_Bitmap; - source: {const} Pointer; - flags: cint; - gray_spans: FT_SpanFunc; - black_spans: FT_SpanFunc; - bit_test: FT_Raster_BitTest_Func; (* doesn't work! *) - bit_set: FT_Raster_BitSet_Func; (* doesn't work! *) - user: Pointer; - clip_box: FT_BBox; - end; - -{$ENDIF TYPE_DECL} - - diff --git a/src/lib/freetype/ftoutln.inc b/src/lib/freetype/ftoutln.inc deleted file mode 100644 index 997c6cb3..00000000 --- a/src/lib/freetype/ftoutln.inc +++ /dev/null @@ -1,497 +0,0 @@ -(***************************************************************************) -(* *) -(* ftoutln.h *) -(* *) -(* Support for the FT_Outline type used to store glyph shapes of *) -(* most scalable font formats (specification). *) -(* *) -(* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007 by *) -(* David Turner, Robert Wilhelm, and Werner Lemberg. *) -(* *) -(* This file is part of the FreeType project, and may only be used, *) -(* modified, and distributed under the terms of the FreeType project *) -(* license, LICENSE.TXT. By continuing to use, modify, or distribute *) -(* this file you indicate that you have read the license and *) -(* understand and accept it fully. *) -(* *) -(***************************************************************************) -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - - (*************************************************************************) - (* *) - (* <Section> *) - (* outline_processing *) - (* *) - (* <Title> *) - (* Outline Processing *) - (* *) - (* <Abstract> *) - (* Functions to create, transform, and render vectorial glyph images. *) - (* *) - (* <Description> *) - (* This section contains routines used to create and destroy scalable *) - (* glyph images known as `outlines'. These can also be measured, *) - (* transformed, and converted into bitmaps and pixmaps. *) - (* *) - (* <Order> *) - (* FT_Outline *) - (* FT_OUTLINE_FLAGS *) - (* FT_Outline_New *) - (* FT_Outline_Done *) - (* FT_Outline_Copy *) - (* FT_Outline_Translate *) - (* FT_Outline_Transform *) - (* FT_Outline_Embolden *) - (* FT_Outline_Reverse *) - (* FT_Outline_Check *) - (* *) - (* FT_Outline_Get_CBox *) - (* FT_Outline_Get_BBox *) - (* *) - (* FT_Outline_Get_Bitmap *) - (* FT_Outline_Render *) - (* *) - (* FT_Outline_Decompose *) - (* FT_Outline_Funcs *) - (* FT_Outline_MoveTo_Func *) - (* FT_Outline_LineTo_Func *) - (* FT_Outline_ConicTo_Func *) - (* FT_Outline_CubicTo_Func *) - (* *) - (*************************************************************************) - -{$IFNDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Decompose *) - (* *) - (* <Description> *) - (* Walks over an outline's structure to decompose it into individual *) - (* segments and Bézier arcs. This function is also able to emit *) - (* `move to' and `close to' operations to indicate the start and end *) - (* of new contours in the outline. *) - (* *) - (* <Input> *) - (* outline :: A pointer to the source target. *) - (* *) - (* func_interface :: A table of `emitters', i.e,. function pointers *) - (* called during decomposition to indicate path *) - (* operations. *) - (* *) - (* <InOut> *) - (* user :: A typeless pointer which is passed to each *) - (* emitter during the decomposition. It can be *) - (* used to store the state during the *) - (* decomposition. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - function FT_Outline_Decompose( - outline: PFT_Outline; - func_interface: {const} PFT_Outline_Funcs; - user: Pointer): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Decompose'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_New *) - (* *) - (* <Description> *) - (* Creates a new outline of a given size. *) - (* *) - (* <Input> *) - (* library :: A handle to the library object from where the *) - (* outline is allocated. Note however that the new *) - (* outline will *not* necessarily be *freed*, when *) - (* destroying the library, by @FT_Done_FreeType. *) - (* *) - (* numPoints :: The maximal number of points within the outline. *) - (* *) - (* numContours :: The maximal number of contours within the outline. *) - (* *) - (* <Output> *) - (* anoutline :: A handle to the new outline. NULL in case of *) - (* error. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* The reason why this function takes a `library' parameter is simply *) - (* to use the library's memory allocator. *) - (* *) - function FT_Outline_New( - library_: FT_Library; - numPoints: FT_UInt; - numContours: FT_Int; - anoutline: PFT_Outline): FT_Error; - cdecl; external ft_lib name 'FT_Outline_New'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Done *) - (* *) - (* <Description> *) - (* Destroys an outline created with @FT_Outline_New. *) - (* *) - (* <Input> *) - (* library :: A handle of the library object used to allocate the *) - (* outline. *) - (* *) - (* outline :: A pointer to the outline object to be discarded. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* If the outline's `owner' field is not set, only the outline *) - (* descriptor will be released. *) - (* *) - (* The reason why this function takes an `library' parameter is *) - (* simply to use ft_mem_free(). *) - (* *) - function FT_Outline_Done(library_: FT_Library; - outline: PFT_Outline): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Done'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Check *) - (* *) - (* <Description> *) - (* Check the contents of an outline descriptor. *) - (* *) - (* <Input> *) - (* outline :: A handle to a source outline. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - function FT_Outline_Check( outline: PFT_Outline ): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Check'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Get_CBox *) - (* *) - (* <Description> *) - (* Returns an outline's `control box'. The control box encloses all *) - (* the outline's points, including Bézier control points. Though it *) - (* coincides with the exact bounding box for most glyphs, it can be *) - (* slightly larger in some situations (like when rotating an outline *) - (* which contains Bézier outside arcs). *) - (* *) - (* Computing the control box is very fast, while getting the bounding *) - (* box can take much more time as it needs to walk over all segments *) - (* and arcs in the outline. To get the latter, you can use the *) - (* `ftbbox' component which is dedicated to this single task. *) - (* *) - (* <Input> *) - (* outline :: A pointer to the source outline descriptor. *) - (* *) - (* <Output> *) - (* acbox :: The outline's control box. *) - (* *) - procedure FT_Outline_Get_CBox( - outline: {const} PFT_Outline; - acbox: PFT_BBox); - cdecl; external ft_lib name 'FT_Outline_Get_CBox'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Translate *) - (* *) - (* <Description> *) - (* Applies a simple translation to the points of an outline. *) - (* *) - (* <InOut> *) - (* outline :: A pointer to the target outline descriptor. *) - (* *) - (* <Input> *) - (* xOffset :: The horizontal offset. *) - (* *) - (* yOffset :: The vertical offset. *) - (* *) - procedure FT_Outline_Translate( - outline: {const} PFT_Outline; - xOffset: FT_Pos; - yOffset: FT_Pos); - cdecl; external ft_lib name 'FT_Outline_Translate'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Copy *) - (* *) - (* <Description> *) - (* Copies an outline into another one. Both objects must have the *) - (* same sizes (number of points & number of contours) when this *) - (* function is called. *) - (* *) - (* <Input> *) - (* source :: A handle to the source outline. *) - (* *) - (* <Output> *) - (* target :: A handle to the target outline. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - function FT_Outline_Copy( - source: {const} PFT_Outline; - target: PFT_Outline): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Copy'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Transform *) - (* *) - (* <Description> *) - (* Applies a simple 2x2 matrix to all of an outline's points. Useful *) - (* for applying rotations, slanting, flipping, etc. *) - (* *) - (* <InOut> *) - (* outline :: A pointer to the target outline descriptor. *) - (* *) - (* <Input> *) - (* matrix :: A pointer to the transformation matrix. *) - (* *) - (* <Note> *) - (* You can use @FT_Outline_Translate if you need to translate the *) - (* outline's points. *) - (* *) - procedure FT_Outline_Transform( - outline: {const} PFT_Outline; - matrix: {const} PFT_Matrix); - cdecl; external ft_lib name 'FT_Outline_Transform'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Embolden *) - (* *) - (* <Description> *) - (* Emboldens an outline. The new outline will be at most 4 times *) - (* `strength' pixels wider and higher. You may think of the left and *) - (* bottom borders as unchanged. *) - (* *) - (* Negative `strength' values to reduce the outline thickness are *) - (* possible also. *) - (* *) - (* <InOut> *) - (* outline :: A handle to the target outline. *) - (* *) - (* <Input> *) - (* strength :: How strong the glyph is emboldened. Expressed in *) - (* 26.6 pixel format. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* The used algorithm to increase or decrease the thickness of the *) - (* glyph doesn't change the number of points; this means that certain *) - (* situations like acute angles or intersections are sometimes *) - (* handled incorrectly. *) - (* *) - (* Example call: *) - (* *) - (* { *) - (* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); *) - (* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) *) - (* FT_Outline_Embolden( &face->slot->outline, strength ); *) - (* } *) - (* *) - function FT_Outline_Embolden( - outline: PFT_Outline; - strength: FT_Pos): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Embolden'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Reverse *) - (* *) - (* <Description> *) - (* Reverses the drawing direction of an outline. This is used to *) - (* ensure consistent fill conventions for mirrored glyphs. *) - (* *) - (* <InOut> *) - (* outline :: A pointer to the target outline descriptor. *) - (* *) - (* <Note> *) - (* This functions toggles the bit flag @FT_OUTLINE_REVERSE_FILL in *) - (* the outline's `flags' field. *) - (* *) - (* It shouldn't be used by a normal client application, unless it *) - (* knows what it is doing. *) - (* *) - procedure FT_Outline_Reverse( outline: PFT_Outline ); - cdecl; external ft_lib name 'FT_Outline_Reverse'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Get_Bitmap *) - (* *) - (* <Description> *) - (* Renders an outline within a bitmap. The outline's image is simply *) - (* OR-ed to the target bitmap. *) - (* *) - (* <Input> *) - (* library :: A handle to a FreeType library object. *) - (* *) - (* outline :: A pointer to the source outline descriptor. *) - (* *) - (* <InOut> *) - (* abitmap :: A pointer to the target bitmap descriptor. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* This function does NOT CREATE the bitmap, it only renders an *) - (* outline image within the one you pass to it! *) - (* *) - (* It will use the raster corresponding to the default glyph format. *) - (* *) - function FT_Outline_Get_Bitmap( - library_: FT_Library; - outline: PFT_Outline; - abitmap: {const} PFT_Bitmap): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Get_Bitmap'; - - - (*************************************************************************) - (* *) - (* <Function> *) - (* FT_Outline_Render *) - (* *) - (* <Description> *) - (* Renders an outline within a bitmap using the current scan-convert. *) - (* This functions uses an @FT_Raster_Params structure as an argument, *) - (* allowing advanced features like direct composition, translucency, *) - (* etc. *) - (* *) - (* <Input> *) - (* library :: A handle to a FreeType library object. *) - (* *) - (* outline :: A pointer to the source outline descriptor. *) - (* *) - (* <InOut> *) - (* params :: A pointer to an @FT_Raster_Params structure used to *) - (* describe the rendering operation. *) - (* *) - (* <Return> *) - (* FreeType error code. 0 means success. *) - (* *) - (* <Note> *) - (* You should know what you are doing and how @FT_Raster_Params works *) - (* to use this function. *) - (* *) - (* The field `params.source' will be set to `outline' before the scan *) - (* converter is called, which means that the value you give to it is *) - (* actually ignored. *) - (* *) - function FT_Outline_Render( - library_: FT_Library; - outline: PFT_Outline; - params: PFT_Raster_Params): FT_Error; - cdecl; external ft_lib name 'FT_Outline_Render'; - -{$ENDIF TYPE_DECL} - - (************************************************************************** - * - * @enum: - * FT_Orientation - * - * @description: - * A list of values used to describe an outline's contour orientation. - * - * The TrueType and Postscript specifications use different conventions - * to determine whether outline contours should be filled or unfilled. - * - * @values: - * FT_ORIENTATION_TRUETYPE :: - * According to the TrueType specification, clockwise contours must - * be filled, and counter-clockwise ones must be unfilled. - * - * FT_ORIENTATION_POSTSCRIPT :: - * According to the Postscript specification, counter-clockwise contours - * must be filled, and clockwise ones must be unfilled. - * - * FT_ORIENTATION_FILL_RIGHT :: - * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to - * remember that in TrueType, everything that is to the right of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_FILL_LEFT :: - * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in Postscript, everything that is to the left of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_NONE :: - * The orientation cannot be determined. That is, different parts of - * the glyph have different orientation. - * - *) -{$IFDEF TYPE_DECL} - FT_Orientation = cint; -{$ELSE TYPE_DECL} -const - FT_ORIENTATION_TRUETYPE = 0; - FT_ORIENTATION_POSTSCRIPT = 1; - FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE; - FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT; - FT_ORIENTATION_NONE = FT_ORIENTATION_FILL_LEFT+1; - - (************************************************************************** - * - * @function: - * FT_Outline_Get_Orientation - * - * @description: - * This function analyzes a glyph outline and tries to compute its - * fill orientation (see @FT_Orientation). This is done by computing - * the direction of each global horizontal and/or vertical extrema - * within the outline. - * - * Note that this will return @FT_ORIENTATION_TRUETYPE for empty - * outlines. - * - * @input: - * outline :: - * A handle to the source outline. - * - * @return: - * The orientation. - * - *) - function FT_Outline_Get_Orientation( outline: PFT_Outline ): FT_Orientation; - cdecl; external ft_lib name 'FT_Outline_Get_Orientation'; - -{$ENDIF TYPE_DECL} - diff --git a/src/lib/freetype/ftstroke.inc b/src/lib/freetype/ftstroke.inc deleted file mode 100644 index bf8a00ae..00000000 --- a/src/lib/freetype/ftstroke.inc +++ /dev/null @@ -1,711 +0,0 @@ -{***************************************************************************} -{* *} -{* ftstroke.h *} -{* *} -{* FreeType path stroker (specification). *} -{* *} -{* Copyright 2002, 2003, 2004, 2005, 2006 by *} -{* David Turner, Robert Wilhelm, and Werner Lemberg. *} -{* *} -{* This file is part of the FreeType project, and may only be used, *} -{* modified, and distributed under the terms of the FreeType project *} -{* license, LICENSE.TXT. By continuing to use, modify, or distribute *} -{* this file you indicate that you have read the license and *} -{* understand and accept it fully. *} -{* *} -{***************************************************************************} -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - {************************************************************************ - * - * @section: - * glyph_stroker - * - * @title: - * Glyph Stroker - * - * @abstract: - * Generating bordered and stroked glyphs. - * - * @description: - * This component generates stroked outlines of a given vectorial - * glyph. It also allows you to retrieve the `outside' and/or the - * `inside' borders of the stroke. - * - * This can be useful to generate `bordered' glyph, i.e., glyphs - * displayed with a coloured (and anti-aliased) border around their - * shape. - *} - -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @type: - * FT_Stroker - * - * @description: - * Opaque handler to a path stroker object. - *} - FT_Stroker = Pointer; - - - {************************************************************** - * - * @enum: - * FT_Stroker_LineJoin - * - * @description: - * These values determine how two joining lines are rendered - * in a stroker. - * - * @values: - * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. - * - * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins; i.e., the two joining lines - * are extended until they intersect. - * - * FT_STROKER_LINEJOIN_MITER :: - * Same as beveled rendering, except that an additional line - * break is added if the angle between the two joining lines - * is too closed (this is useful to avoid unpleasant spikes - * in beveled rendering). - *} - FT_Stroker_LineJoin = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_LINEJOIN_ROUND = 0; - FT_STROKER_LINEJOIN_BEVEL = 1; - FT_STROKER_LINEJOIN_MITER = 2; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @enum: - * FT_Stroker_LineCap - * - * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. - * - * @values: - * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. - * - * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. - * - * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. - *} - FT_Stroker_LineCap = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_LINECAP_BUTT = 0; - FT_STROKER_LINECAP_ROUND = 1; - FT_STROKER_LINECAP_SQUARE = 2; - -{$ENDIF TYPE_DECL} -{$IFDEF TYPE_DECL} - - {************************************************************** - * - * @enum: - * FT_StrokerBorder - * - * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. - * - * @values: - * FT_STROKER_BORDER_LEFT :: - * Select the left border, relative to the drawing direction. - * - * FT_STROKER_BORDER_RIGHT :: - * Select the right border, relative to the drawing direction. - * - * @note: - * Applications are generally interested in the `inside' and `outside' - * borders. However, there is no direct mapping between these and the - * `left' and `right' ones, since this really depends on the glyph's - * drawing orientation, which varies between font formats. - * - * You can however use @FT_Outline_GetInsideBorder and - * @FT_Outline_GetOutsideBorder to get these. - *} - FT_StrokerBorder = cint; -{$ELSE TYPE_DECL} -const - FT_STROKER_BORDER_LEFT = 0; - FT_STROKER_BORDER_RIGHT = 1; - - - {************************************************************** - * - * @function: - * FT_Outline_GetInsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - *} - function FT_Outline_GetInsideBorder( outline: PFT_Outline ): FT_StrokerBorder; - cdecl; external ft_lib name 'FT_Outline_GetInsideBorder'; - - - {************************************************************** - * - * @function: - * FT_Outline_GetOutsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - *} - function FT_Outline_GetOutsideBorder( outline: PFT_Outline ): FT_StrokerBorder; - cdecl; external ft_lib name 'FT_Outline_GetOutsideBorder'; - - - {************************************************************** - * - * @function: - * FT_Stroker_New - * - * @description: - * Create a new stroker object. - * - * @input: - * library :: - * FreeType library handle. - * - * @output: - * astroker :: - * A new stroker object handle. NULL in case of error. - * - * @return: - * FreeType error code. 0 means success. - *} - function FT_Stroker_New( - library_: FT_Library; - out astroker: FT_Stroker ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_New'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Set - * - * @description: - * Reset a stroker object's attributes. - * - * @input: - * stroker :: - * The target stroker handle. - * - * radius :: - * The border radius. - * - * line_cap :: - * The line cap style. - * - * line_join :: - * The line join style. - * - * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER style, - * expressed as 16.16 fixed point value. - * - * @note: - * The radius is expressed in the same units that the outline - * coordinates. - *} - procedure FT_Stroker_Set( - stroker: FT_Stroker; - radius: FT_Fixed; - line_cap: FT_Stroker_LineCap; - line_join: FT_Stroker_LineJoin; - miter_limit: FT_Fixed ); - cdecl; external ft_lib name 'FT_Stroker_Set'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Rewind - * - * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. - * - * @input: - * stroker :: - * The target stroker handle. - *} - procedure FT_Stroker_Rewind( stroker: FT_Stroker ); - cdecl; external ft_lib name 'FT_Stroker_Rewind'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ParseOutline - * - * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The source outline. - * - * opened :: - * A boolean. If 1, the outline is treated as an open path instead - * of a closed one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If `opened' is 0 (the default), the outline is treated as a closed - * path, and the stroker will generate two distinct `border' outlines. - * - * If `opened' is 1, the outline is processed as an open path, and the - * stroker will generate a single `stroke' outline. - * - * This function calls @FT_Stroker_Rewind automatically. - *} - function FT_Stroker_ParseOutline( - stroker: FT_Stroker; - outline: PFT_Outline; - opened: FT_Bool): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_ParseOutline'; - - - {************************************************************** - * - * @function: - * FT_Stroker_BeginSubPath - * - * @description: - * Start a new sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the start vector. - * - * open :: - * A boolean. If 1, the sub-path is treated as an open one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function is useful when you need to stroke a path that is - * not stored as an @FT_Outline object. - *} - function FT_Stroker_BeginSubPath( - stroker: FT_Stroker; - to_: PFT_Vector; - open: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_BeginSubPath'; - - - {************************************************************** - * - * @function: - * FT_Stroker_EndSubPath - * - * @description: - * Close the current sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function will `draw' a - * single line segment to the start position when needed. - *} - function FT_Stroker_EndSubPath( stroker: FT_Stroker ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_EndSubPath'; - - - {************************************************************** - * - * @function: - * FT_Stroker_LineTo - * - * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_LineTo( - stroker: FT_Stroker; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_LineTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ConicTo - * - * @description: - * `Draw' a single quadratic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control :: - * A pointer to a Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_ConicTo( - stroker: FT_Stroker; - control: PFT_Vector; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_ConicTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_CubicTo - * - * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control1 :: - * A pointer to the first Bézier control point. - * - * control2 :: - * A pointer to second Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - *} - function FT_Stroker_CubicTo( - stroker: FT_Stroker; - control1: PFT_Vector; - control2: PFT_Vector; - to_: PFT_Vector ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_CubicTo'; - - - {************************************************************** - * - * @function: - * FT_Stroker_GetBorderCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It will return the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. - *} - function FT_Stroker_GetBorderCounts( - stroker: FT_Stroker; - border: FT_StrokerBorder; - out anum_points: FT_UInt; - out anum_contours: FT_UInt ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_GetBorderCounts'; - - - {************************************************************** - * - * @function: - * FT_Stroker_ExportBorder - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * outline :: - * The target outline handle. - * - * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. - * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. - *} - procedure FT_Stroker_ExportBorder( - stroker: FT_Stroker; - border: FT_StrokerBorder; - outline: PFT_Outline ); - cdecl; external ft_lib name 'FT_Stroker_ExportBorder'; - - - {************************************************************** - * - * @function: - * FT_Stroker_GetCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - *} - function FT_Stroker_GetCounts( - stroker: FT_Stroker; - out anum_points: FT_UInt; - out anum_contours: FT_UInt ): FT_Error; - cdecl; external ft_lib name 'FT_Stroker_GetCounts'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Export - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the all borders to your own @FT_Outline structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The target outline handle. - *} - procedure FT_Stroker_Export( - stroker: FT_Stroker; - outline: PFT_Outline ); - cdecl; external ft_lib name 'FT_Stroker_Export'; - - - {************************************************************** - * - * @function: - * FT_Stroker_Done - * - * @description: - * Destroy a stroker object. - * - * @input: - * stroker :: - * A stroker handle. Can be NULL. - *} - procedure FT_Stroker_Done( stroker: FT_Stroker ); - cdecl; external ft_lib name 'FT_Stroker_Done'; - - - {************************************************************** - * - * @function: - * FT_Glyph_Stroke - * - * @description: - * Stroke a given outline glyph object with a given stroker. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - *} - function FT_Glyph_Stroke( - var glyph: FT_Glyph; - stroker: FT_Stroker; - destroy: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_Stroke'; - - - {************************************************************** - * - * @function: - * FT_Glyph_StrokeBorder - * - * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * inside :: - * A Boolean. If 1, return the inside border, otherwise - * the outside border. - * - * destroy :: - * A Boolean. If 1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - *} - function FT_Glyph_StrokeBorder( - var glyph: FT_Glyph; - stroker: FT_Stroker; - inside: FT_Bool; - destroy: FT_Bool ): FT_Error; - cdecl; external ft_lib name 'FT_Glyph_StrokeBorder'; - -{$ENDIF TYPE_DECL} - diff --git a/src/lib/freetype/fttypes.inc b/src/lib/freetype/fttypes.inc deleted file mode 100644 index a64432e6..00000000 --- a/src/lib/freetype/fttypes.inc +++ /dev/null @@ -1,311 +0,0 @@ -(***************************************************************************) -(* *) -(* fttypes.h *) -(* *) -(* FreeType simple types definitions (specification only). *) -(* *) -(* Copyright 1996-2001, 2002, 2004, 2006, 2007 by *) -(* David Turner, Robert Wilhelm, and Werner Lemberg. *) -(* *) -(* This file is part of the FreeType project, and may only be used, *) -(* modified, and distributed under the terms of the FreeType project *) -(* license, LICENSE.TXT. By continuing to use, modify, or distribute *) -(* this file you indicate that you have read the license and *) -(* understand and accept it fully. *) -(* *) -(***************************************************************************) -(***************************************************************************) -(* Pascal port by the UltraStar Deluxe Team *) -(***************************************************************************) - - (*************************************************************************) - (* *) - (* <Section> *) - (* basic_types *) - (* *) - (* <Title> *) - (* Basic Data Types *) - (* *) - (* <Abstract> *) - (* The basic data types defined by the library. *) - (* *) - (* <Description> *) - (* This section contains the basic data types defined by FreeType 2, *) - (* ranging from simple scalar types to bitmap descriptors. More *) - (* font-specific structures are defined in a different section. *) - (* *) - (* <Order> *) - (* FT_Byte *) - (* FT_Bytes *) - (* FT_Char *) - (* FT_Int *) - (* FT_UInt *) - (* FT_Short *) - (* FT_UShort *) - (* FT_Long *) - (* FT_ULong *) - (* FT_Bool *) - (* FT_Offset *) - (* FT_PtrDist *) - (* FT_String *) - (* FT_Tag *) - (* FT_Error *) - (* FT_Fixed *) - (* FT_Pointer *) - (* FT_Pos *) - (* FT_Vector *) - (* FT_BBox *) - (* FT_Matrix *) - (* FT_FWord *) - (* FT_UFWord *) - (* FT_F2Dot14 *) - (* FT_UnitVector *) - (* FT_F26Dot6 *) - (* *) - (* *) - (* FT_Generic *) - (* FT_Generic_Finalizer *) - (* *) - (* FT_Bitmap *) - (* FT_Pixel_Mode *) - (* FT_Palette_Mode *) - (* FT_Glyph_Format *) - (* FT_IMAGE_TAG *) - (* *) - (*************************************************************************) - -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Bool *) - (* *) - (* <Description> *) - (* A typedef of unsigned char, used for simple booleans. As usual, *) - (* values 1 and 0 represent true and false, respectively. *) - (* *) - FT_Bool = cuchar; -{$ENDIF TYPE_DECL} -{$IFNDEF TYPE_DECL} -const - FT_FALSE = 0; - FT_TRUE = 1; -{$ENDIF !TYPE_DECL} -{$IFDEF TYPE_DECL} - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Byte *) - (* *) - (* <Description> *) - (* A simple typedef for the _unsigned_ char type. *) - (* *) - FT_Byte = cuchar; - PFT_Byte = ^FT_Byte; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_String *) - (* *) - (* <Description> *) - (* A simple typedef for the char type, usually used for strings. *) - (* *) - FT_String = cchar; - PFT_String = ^FT_String; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Short *) - (* *) - (* <Description> *) - (* A typedef for signed short. *) - (* *) - FT_Short = csshort; - PFT_Short = ^FT_Short; - - PFT_ShortArray = ^FT_ShortArray; - FT_ShortArray = array[0 .. (MaxInt div SizeOf(FT_Short))-1] of FT_Short; - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_UShort *) - (* *) - (* <Description> *) - (* A typedef for unsigned short. *) - (* *) - FT_UShort = cushort; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Int *) - (* *) - (* <Description> *) - (* A typedef for the int type. *) - (* *) - FT_Int = csint; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_UInt *) - (* *) - (* <Description> *) - (* A typedef for the unsigned int type. *) - (* *) - FT_UInt = cuint; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Long *) - (* *) - (* <Description> *) - (* A typedef for signed long. *) - (* *) - FT_Long = cslong; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_ULong *) - (* *) - (* <Description> *) - (* A typedef for unsigned long. *) - (* *) - FT_ULong = culong; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_F26Dot6 *) - (* *) - (* <Description> *) - (* A signed 26.6 fixed float type used for vectorial pixel *) - (* coordinates. *) - (* *) - FT_F26Dot6 = cslong; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Fixed *) - (* *) - (* <Description> *) - (* This type is used to store 16.16 fixed float values, like scaling *) - (* values or matrix coefficients. *) - (* *) - FT_Fixed = cslong; - - - (*************************************************************************) - (* *) - (* <Type> *) - (* FT_Error *) - (* *) - (* <Description> *) - (* The FreeType error code type. A value of 0 is always interpreted *) - (* as a successful operation. *) - (* *) - FT_Error = cint; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Matrix *) - (* *) - (* <Description> *) - (* A simple structure used to store a 2x2 matrix. Coefficients are *) - (* in 16.16 fixed float format. The computation performed is: *) - (* *) - (* { *) - (* x' = x*xx + y*xy *) - (* y' = x*yx + y*yy *) - (* } *) - (* *) - (* <Fields> *) - (* xx :: Matrix coefficient. *) - (* *) - (* xy :: Matrix coefficient. *) - (* *) - (* yx :: Matrix coefficient. *) - (* *) - (* yy :: Matrix coefficient. *) - (* *) - PFT_Matrix = ^FT_Matrix; - FT_Matrix = record - xx, xy: FT_Fixed; - yx, yy: FT_Fixed; - end; - - - (*************************************************************************) - (* *) - (* <FuncType> *) - (* FT_Generic_Finalizer *) - (* *) - (* <Description> *) - (* Describes a function used to destroy the `client' data of any *) - (* FreeType object. See the description of the FT_Generic type for *) - (* details of usage. *) - (* *) - (* <Input> *) - (* The address of the FreeType object which is under finalization. *) - (* Its client data is accessed through its `generic' field. *) - (* *) - FT_Generic_Finalizer = procedure(AnObject : pointer ); cdecl; - - - (*************************************************************************) - (* *) - (* <Struct> *) - (* FT_Generic *) - (* *) - (* <Description> *) - (* Client applications often need to associate their own data to a *) - (* variety of FreeType core objects. For example, a text layout API *) - (* might want to associate a glyph cache to a given size object. *) - (* *) - (* Most FreeType object contains a `generic' field, of type *) - (* FT_Generic, which usage is left to client applications and font *) - (* servers. *) - (* *) - (* It can be used to store a pointer to client-specific data, as well *) - (* as the address of a `finalizer' function, which will be called by *) - (* FreeType when the object is destroyed (for example, the previous *) - (* client example would put the address of the glyph cache destructor *) - (* in the `finalizer' field). *) - (* *) - (* <Fields> *) - (* data :: A typeless pointer to any client-specified data. This *) - (* field is completely ignored by the FreeType library. *) - (* *) - (* finalizer :: A pointer to a `generic finalizer' function, which *) - (* will be called when the object is destroyed. If this *) - (* field is set to NULL, no code will be called. *) - (* *) - FT_Generic = record - data: pointer; - finalizer: FT_Generic_Finalizer; - end; - - - TByteArray = array [0 .. (MaxInt div SizeOf(byte))-1] of byte; - PByteArray = ^TByteArray; - -{$ENDIF TYPE_DECL} - |