aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/freetype
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/freetype')
-rw-r--r--src/lib/freetype/demo/engine-test.bdsproj175
-rw-r--r--src/lib/freetype/demo/engine-test.dpr338
-rw-r--r--src/lib/freetype/demo/engine-test.lpi182
-rw-r--r--src/lib/freetype/demo/nehe/lesson43.bdsproj175
-rw-r--r--src/lib/freetype/demo/nehe/lesson43.dpr289
-rw-r--r--src/lib/freetype/demo/nehe/readme.txt9
-rw-r--r--src/lib/freetype/demo/switches.inc1
-rw-r--r--src/lib/freetype/ftconfig.inc35
-rw-r--r--src/lib/freetype/ftglyph.inc435
-rw-r--r--src/lib/freetype/ftimage.inc803
-rw-r--r--src/lib/freetype/ftoutln.inc497
-rw-r--r--src/lib/freetype/ftstroke.inc711
-rw-r--r--src/lib/freetype/fttypes.inc311
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}
-