From 89004493d00f4605d0115fe56f70a5e289d1ee11 Mon Sep 17 00:00:00 2001 From: blaszijk Date: Tue, 3 Jan 2012 00:01:04 +0000 Subject: [PATCH] started work on freetype support some cleaning up of the sources git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2221 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/nvidia-widgets/doc/compile.bat | 6 +- .../nvidia-widgets/doc/images/nvwidgets.png | Bin 23935 -> 39632 bytes components/nvidia-widgets/doc/index-8.html | 62 ++-- components/nvidia-widgets/doc/index.html | 5 + components/nvidia-widgets/doc/nvwidgets.chm | Bin 56630 -> 0 bytes .../nvidia-widgets/src/gl/glfreetype.pas | 312 ++++++++++++++++++ .../src/nvwidgets/examples/example.lpi | 9 +- .../src/nvwidgets/examples/example.pp | 16 +- .../src/nvwidgets/nvWidgets.pas | 37 +-- 9 files changed, 397 insertions(+), 50 deletions(-) create mode 100644 components/nvidia-widgets/src/gl/glfreetype.pas diff --git a/components/nvidia-widgets/doc/compile.bat b/components/nvidia-widgets/doc/compile.bat index b5c4057f9..df0a1d0ae 100644 --- a/components/nvidia-widgets/doc/compile.bat +++ b/components/nvidia-widgets/doc/compile.bat @@ -1,6 +1,6 @@ set path=%path%;H:\other\graphviz\bin -fpclasschart --input=../src/nvwidgets/nvWidgets.pas --input=../src/nvwidgets/nvglwidgets.pas --input=../src/nvwidgets/nvglutwidgets.pas --input=../src/nvglutils/nvshaderutils.pas --format=graphviz --output=nvwidgets.dot +fpclasschart --input=../src/nvwidgets/nvWidgets.pas --input=../src/nvwidgets/nvglwidgets.pas --input=../src/nvwidgets/nvglutwidgets.pas --input=../src/nvglutils/nvshaderutils.pas --input=../src/gl/glfreetype.pas --format=graphviz --output=nvwidgets.dot dot -Tpng nvwidgets.dot > ./images/nvwidgets.png @@ -10,7 +10,7 @@ del nvwidgets.dot del *.chm ::create chm documentation -fpdoc --package=nvidia-widgets --descr=nvwidgets.xml --input=../src/nvwidgets/nvWidgets.pas --descr=nvglwidgets.xml --input=../src/nvwidgets/nvglwidgets.pas --descr=nvglutwidgets.xml --input=../src/nvwidgets/nvglutwidgets.pas --descr=nvshaderutils.xml --input=../src/nvglutils/nvshaderutils.pas --css-file=fpdoc.css --format=chm --output=nvwidgets.chm +fpdoc --package=nvidia-widgets --descr=nvwidgets.xml --input=../src/nvwidgets/nvWidgets.pas --descr=nvglwidgets.xml --input=../src/nvwidgets/nvglwidgets.pas --descr=nvglutwidgets.xml --input=../src/nvwidgets/nvglutwidgets.pas --descr=nvshaderutils.xml --input=../src/nvglutils/nvshaderutils.pas --descr=glfreetype.xml --input=../src/gl/glfreetype.pas --css-file=fpdoc.css --format=chm --output=nvwidgets.chm ::delete old html documentation del *.html @@ -20,4 +20,4 @@ del /Q /S nvglwidgets\*.html del /Q /S nvshaderutils\*.html ::create html documentation -fpdoc --package=nvidia-widgets --descr=nvwidgets.xml --input=../src/nvwidgets/nvWidgets.pas --descr=nvglwidgets.xml --input=../src/nvwidgets/nvglwidgets.pas --descr=nvglutwidgets.xml --input=../src/nvwidgets/nvglutwidgets.pas --descr=nvshaderutils.xml --input=../src/nvglutils/nvshaderutils.pas --format=html +fpdoc --package=nvidia-widgets --descr=nvwidgets.xml --input=../src/nvwidgets/nvWidgets.pas --descr=nvglwidgets.xml --input=../src/nvwidgets/nvglwidgets.pas --descr=nvglutwidgets.xml --input=../src/nvwidgets/nvglutwidgets.pas --descr=nvshaderutils.xml --input=../src/nvglutils/nvshaderutils.pas --descr=glfreetype.xml --input=../src/gl/glfreetype.pas --format=html diff --git a/components/nvidia-widgets/doc/images/nvwidgets.png b/components/nvidia-widgets/doc/images/nvwidgets.png index 81821d6fcfca7ee883e32315e660934922580bec..28d770aac6f7ca5b763b3722a8c72a15d57135da 100644 GIT binary patch literal 39632 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 O;_2qSrfgMk;{O4rTV3%0 diff --git a/components/nvidia-widgets/doc/index-8.html b/components/nvidia-widgets/doc/index-8.html index 25de8713e..471ac7049 100644 --- a/components/nvidia-widgets/doc/index-8.html +++ b/components/nvidia-widgets/doc/index-8.html @@ -27,6 +27,7 @@ P  R  S  +T  U  @@ -87,60 +88,65 @@

G

- + - - - - - - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + +
GLUIPainterglFreeType GroupFlags_GrowLeftFromBottomGroupFlags_LayoutNoMargin
GlutUIContextGroupFlags_GrowLeftFromTop GroupFlags_LayoutNone
GroupGroupFlags_GrowRightFromBottomGLUIPainterGroupFlags_GrowLeftFromTop GroupFlags_LayoutNoSpace
GroupFlags_AlignBottomGroupFlags_GrowRightFromTopGlutUIContextGroupFlags_GrowRightFromBottom GroupFlags_LayoutVertical
GroupFlags_AlignLeftGroupFlags_GrowUpFromLeftGroupGroupFlags_GrowRightFromTop GroupFlags_LayoutXMask
GroupFlags_AlignMaskGroupFlags_GrowUpFromRightGroupFlags_AlignBottomGroupFlags_GrowUpFromLeft GroupFlags_StartBottom
GroupFlags_AlignRightGroupFlags_LayoutDefaultGroupFlags_AlignLeftGroupFlags_GrowUpFromRight GroupFlags_StartLeft
GroupFlags_AlignTopGroupFlags_LayoutDefaultFallbackGroupFlags_AlignMaskGroupFlags_LayoutDefault GroupFlags_StartMask
GroupFlags_AlignXMaskGroupFlags_LayoutForceGroupFlags_AlignRightGroupFlags_LayoutDefaultFallback GroupFlags_StartRight
GroupFlags_GrowDownFromLeftGroupFlags_LayoutHorizontalGroupFlags_AlignTopGroupFlags_LayoutForce GroupFlags_StartTop
GroupFlags_GrowDownFromRightGroupFlags_LayoutMaskGroupFlags_AlignXMaskGroupFlags_LayoutHorizontal GroupFlags_StartXMask
GroupFlags_GrowDownFromLeftGroupFlags_LayoutMask
GroupFlags_GrowDownFromRightGroupFlags_LayoutNoMargin

K

@@ -233,6 +239,14 @@
SetRect
+

T

+ + + + + + +
TGLFreeTypeFont

U

diff --git a/components/nvidia-widgets/doc/index.html b/components/nvidia-widgets/doc/index.html index c6169dc7f..c19d92de5 100644 --- a/components/nvidia-widgets/doc/index.html +++ b/components/nvidia-widgets/doc/index.html @@ -18,6 +18,11 @@

Units

+ + + + + diff --git a/components/nvidia-widgets/doc/nvwidgets.chm b/components/nvidia-widgets/doc/nvwidgets.chm index 6f17f94bf1457d5c9857d80b2856f00b827a5cbc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 56630 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 the +//int that we pass it. +function next_p2(a: integer): integer; inline; +var + rval: integer; +begin + rval := 1; + while rval < a do + rval := rval shl 1; + Result := rval; +end; + +//Create a display list coresponding to the give character. +procedure make_dlist(face: PFT_Face; ch: char; list_base: GLuint; tex_base: pGLuint); +var + glyph: PFT_Glyph; + bitmap_glyph: PFT_BitmapGlyph; + bitmap: FT_Bitmap; + Width: integer; + Height: integer; + expanded_data: pGLubyte; + x: double; + y: double; + i, j: integer; +begin + //The first thing we do is get FreeType to render our character + //into a bitmap. This actually requires a couple of FreeType commands: + + //Load the Glyph for our character. + if FT_Load_Glyph(face, FT_Get_Char_Index(face, Ord(ch)), FT_LOAD_DEFAULT) = 1 then + raise Exception.Create('FT_Load_Glyph failed'); + + //Move the face's glyph into a Glyph object. + if FT_Get_Glyph(face^.glyph, glyph) = 1 then + raise Exception.Create('FT_Get_Glyph failed'); + + FT_Glyph_To_Bitmap(glyph, FT_RENDER_MODE_NORMAL, nil, True); + + //Convert the glyph to a bitmap. + bitmap_glyph := PFT_BitmapGlyph(glyph); + + //This reference will make accessing the bitmap easier + bitmap := bitmap_glyph^.bitmap; + + //Use our helper function to get the widths of + //the bitmap data that we will need in order to create + //our texture. + Width := next_p2(bitmap.Width); + Height := next_p2(bitmap.rows); + + //Allocate memory for the texture data. + GetMem(expanded_data, 2 * Width * Height); + //writeln(2 * Width * Height, 'bytes for character #', Ord(ch), ' - ', ch); + + //Here we fill in the data for the expanded bitmap. + //Notice that we are using two channel bitmap (one for + //luminocity and one for alpha), but we assign + //both luminocity and alpha to the value that we + //find in the FreeType bitmap. + //We use the ?: operator so that value which we use + //will be 0 if we are in the padding zone, and whatever + //is the the Freetype bitmap otherwise. + for j := 0 to Height - 1 do + begin + for i := 0 to Width - 1 do + begin + if (i >= bitmap.Width) or (j >= bitmap.rows) then + expanded_data[2 * (i + j * Width)] := 0 + else + expanded_data[2 * (i + j * Width)] := byte((bitmap.buffer + (i + bitmap.Width * j))^); + + //write(expanded_data[2 * (i + j * Width)]:3, ' '); + + expanded_data[2 * (i + j * Width) + 1] := expanded_data[2 * (i + j * Width)]; + end; + + //writeln; + end; + + glBindTexture(GL_TEXTURE_2D, tex_base[Ord(ch)]); + + //Now we just setup some texture paramaters. + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Width, Height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, expanded_data); + + //Here we actually create the texture itself, notice + //that we are using GL_LUMINANCE_ALPHA to indicate that + //we are using 2 channel data. + + //With the texture created, we don't need to expanded data anymore + FreeMem(expanded_data, 2 * Width * Height); + glNewList(list_base + Ord(ch), GL_COMPILE); + + //So now we can create the display list + glBindTexture(GL_TEXTURE_2D, tex_base[Ord(ch)]); + glPushMatrix; + glTranslatef(bitmap_glyph^.left, 0, 0); + + //first we need to move over a little so that + //the character has the right amount of space + //between it and the one before it. + glTranslatef(0, bitmap_glyph^.top - bitmap.rows, 0); + + //Now we move down a little in the case that the + //bitmap extends past the bottom of the line + //(this is only true for characters like 'g' or 'y'. + + //Now we need to account for the fact that many of + //our textures are filled with empty padding space. + //We figure what portion of the texture is used by + //the actual character and store that information in + //the x and y variables, then when we draw the + //quad, we will only reference the parts of the texture + //that we contain the character itself. + x := bitmap.Width / Width; + y := bitmap.rows / Height; + + //Here we draw the texturemaped quads. + //The bitmap that we got from FreeType was not + //oriented quite like we would like it to be, + //so we need to link the texture to the quad + //so that the result will be properly aligned. + glBegin(GL_QUADS); + glTexCoord2d(0, 0); + glVertex2f(0, bitmap.rows); + glTexCoord2d(0, y); + glVertex2f(0, 0); + glTexCoord2d(x, y); + glVertex2f(bitmap.Width, 0); + glTexCoord2d(x, 0); + glVertex2f(bitmap.Width, bitmap.rows); + glEnd; + + glPopMatrix; + glTranslatef(face^.glyph^.advance.x shr 6, 0, 0); + + //increment the raster position as if we were a bitmap font. + //(only needed if you want to calculate text length) + glBitmap(0, 0, 0, 0, face^.glyph^.advance.x shr 6, 0, nil); + + //Finish the display list + glEndList; +end; + +procedure TGLFreeTypeFont.Init(const fname: string; AHeight: cardinal); +var + library_: PFT_Library = nil; + face: PFT_Face = nil; //The object in which Freetype holds information on a given font is called a "face". + i: byte; +begin + //Allocate some memory to store the texture ids. + GetMem(textures, CHAR_NUM * SizeOf(GLuint)); + + Height := AHeight; + + //Create and initilize a freetype font library. + if FT_Init_FreeType(library_) = 1 then + raise Exception.Create('FT_Init_FreeType failed'); + + //This is where we load in the font information from the file. + //Of all the places where the code might die, this is the most likely, + //as FT_New_Face will die if the font file does not exist or is somehow broken. + if FT_New_Face(library_, PChar(fname), 0, face) = 1 then + raise Exception.Create('FT_New_Face failed (there is probably a problem with your font file)'); + + //For some twisted reason, Freetype measures font size + //in terms of 1/64ths of pixels. Thus, to make a font + //h pixels high, we need to request a size of h*64. + //(h << 6 is just a prettier way of writting h*64) + FT_Set_Char_Size(face, Height shl 6, Height shl 6, 96, 96); + + //Here we ask opengl to allocate resources for + //all the textures and displays lists which we + //are about to create. + list_base := glGenLists(CHAR_NUM); + glGenTextures(CHAR_NUM, textures); + + //This is where we actually create each of the fonts display lists. + for i := 0 to CHAR_NUM - 1 do + make_dlist(face, Chr(i), list_base, textures); + + //We don't need the face information now that the display + //lists have been created, so we free the assosiated resources. + FT_Done_Face(face); + + //Ditto for the library. + FT_Done_FreeType(library_); +end; + +procedure TGLFreeTypeFont.Clean; +begin + glDeleteLists(list_base, CHAR_NUM); + glDeleteTextures(CHAR_NUM, textures); + FreeMem(textures, CHAR_NUM * SizeOf(GLuint)); +end; + +//A fairly straight forward function that pushes +//a projection matrix that will make object world +//coordinates identical to window coordinates. +procedure pushScreenCoordinateMatrix; +var + viewport: array [0..3] of GLint; +begin + glPushAttrib(GL_TRANSFORM_BIT); + glGetIntegerv(GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glPushMatrix; + glLoadIdentity; + gluOrtho2D(viewport[0], viewport[2], viewport[1], viewport[3]); + glPopAttrib; +end; + +//Pops the projection matrix without changing the current +//MatrixMode. +procedure pop_projection_matrix; +begin + glPushAttrib(GL_TRANSFORM_BIT); + glMatrixMode(GL_PROJECTION); + glPopMatrix; + glPopAttrib; +end; + +//Much like Nehe's glPrint function, but modified to work +//with freetype fonts. +procedure TGLFreeTypeFont.Print(x, y: double; Text: string); +var + font: GLuint; + modelview_matrix: array [0..15] of double; +begin + pushScreenCoordinateMatrix; + + //We want a coordinate system where things coresponding to window pixels. + font := list_base; + + //Results Are Stored In Text + glPushAttrib(GL_LIST_BIT or GL_CURRENT_BIT or GL_ENABLE_BIT or GL_TRANSFORM_BIT); + + glMatrixMode(GL_MODELVIEW); + glDisable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); + glDisable(GL_DEPTH_TEST); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glListBase(font); + + glGetFloatv(GL_MODELVIEW_MATRIX, @modelview_matrix[0]); + + glPushMatrix; + glLoadIdentity; + glTranslatef(x, y, 0); + glMultMatrixf(@modelview_matrix[0]); + glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text)); + + //The commented out raster position stuff can be useful if you need to + //know the length of the text that you are creating. + //If you decide to use it make sure to also uncomment the glBitmap command + //in make_dlist. + //glRasterPos2f(0,0); + glPopMatrix; + //float rpos[4]; + //glGetFloatv(GL_CURRENT_RASTER_POSITION ,rpos); + //float len=x-rpos[0]; + + glPopAttrib; + pop_projection_matrix; +end; + +end. + diff --git a/components/nvidia-widgets/src/nvwidgets/examples/example.lpi b/components/nvidia-widgets/src/nvwidgets/examples/example.lpi index 27960bbc5..82e32c239 100644 --- a/components/nvidia-widgets/src/nvwidgets/examples/example.lpi +++ b/components/nvidia-widgets/src/nvwidgets/examples/example.lpi @@ -33,7 +33,7 @@ - + @@ -59,6 +59,11 @@ + + + + + @@ -69,7 +74,7 @@ - + diff --git a/components/nvidia-widgets/src/nvwidgets/examples/example.pp b/components/nvidia-widgets/src/nvwidgets/examples/example.pp index 4c167942f..94aa3b797 100644 --- a/components/nvidia-widgets/src/nvwidgets/examples/example.pp +++ b/components/nvidia-widgets/src/nvwidgets/examples/example.pp @@ -5,7 +5,7 @@ program example; uses Classes, SysUtils, - GLut, GL, GLu, + GLut, GL, GLu, glFreeType, nvWidgets, nvGlutWidgets; type @@ -25,10 +25,13 @@ var errorScale: double = 4; compressionRate: double = 1; texture: GLuint = 0; + let: string = 'linedit test'; + glFont: TGLFreeTypeFont; procedure closeapp; begin FreeAndNil(ui); + glFont.clean; halt(0); end; @@ -79,7 +82,12 @@ var formatIdx: integer; Text: string; textureRect: Rect; + + c: integer; begin + glColor3ub(0, $ff, 0); + glFont.Print(10, 200, 'The quick brown fox jumps over the lazy dog'); + none.Rect(0, 0); ui._begin; @@ -93,6 +101,10 @@ var ui.beginGroup(GroupFlags_GrowLeftFromTop or GroupFlags_LayoutNoMargin); ui.doCheckButton(none, 'Show difference', options[OPTION_DIFF]); + ui.beginPanel(none, 'panel', true); + ui.doCheckButton(none, 'Show difference', options[OPTION_DIFF]); + ui.endPanel; + if options[OPTION_DIFF] then ui.doHorizontalSlider(none, 1, 16, errorScale); @@ -163,6 +175,8 @@ begin glutInitDisplayMode(GLUT_DOUBLE or GLUT_DEPTH or GLUT_RGB); glutCreateWindow('UI example'); + glFont.Init('Ubuntu-R.ttf', 26); //Build the freetype font + ui := GlutUIContext.Create; if not ui.init(win_w, win_h) then diff --git a/components/nvidia-widgets/src/nvwidgets/nvWidgets.pas b/components/nvidia-widgets/src/nvwidgets/nvWidgets.pas index e6b531733..adf9aa630 100644 --- a/components/nvidia-widgets/src/nvwidgets/nvWidgets.pas +++ b/components/nvidia-widgets/src/nvwidgets/nvWidgets.pas @@ -212,7 +212,7 @@ type // UI method for processing window size events ////////////////////////////////////////////////////////////////// - procedure reshape(w: integer; h: integer); + procedure reshape(w, h: integer); // // Check if the UI is currently on Focus @@ -222,18 +222,18 @@ type // // UI method for processing mouse events ////////////////////////////////////////////////////////////////// - procedure mouse(button: integer; state: integer; modifier: integer; x: integer; y: integer); - procedure mouse(button: integer; state: integer; x: integer; y: integer); + procedure mouse(button, state, modifier, x, y: integer); + procedure mouse(button, state, x, y: integer); // // UI method for processing mouse motion events ////////////////////////////////////////////////////////////////// - procedure mouseMotion(x: integer; y: integer); + procedure mouseMotion(x, y: integer); // UI method for processing key events ////////////////////////////////////////////////////////////////// - procedure keyboard(k: byte; x: integer; y: integer); + procedure keyboard(k: byte; x, y: integer); // // UI method for entering UI processing mode @@ -497,7 +497,7 @@ begin m_focusCaretPos := -1; end; -procedure UIContext.reshape(w: integer; h: integer); +procedure UIContext.reshape(w, h: integer); begin m_window.x := 0; m_window.y := 0; @@ -510,21 +510,18 @@ begin Result := m_uiOnFocus; end; -procedure UIContext.mouse(button: integer; state: integer; modifier: integer; x: integer; y: integer); +procedure UIContext.mouse(button, state, modifier, x, y: integer); var idx: integer; begin setCursor(x, y); idx := -1; - if button = MouseButton_Left then - idx := 0 - else - if button = MouseButton_Middle then - idx := 1 - else - if button = MouseButton_Right then - idx := 2; + case button of + MouseButton_Left: idx := 0; + MouseButton_Middle: idx := 1; + MouseButton_Right: idx := 2; + end; modifier := modifier and (ButtonFlags_Alt or ButtonFlags_Shift or ButtonFlags_Ctrl); @@ -538,23 +535,21 @@ begin m_mouseButton[idx].cursor.y := m_window.h - y; end; if state = 0 then - begin m_mouseButton[idx].state := ButtonFlags_On or ButtonFlags_End or modifier; - end; end; end; -procedure UIContext.mouse(button: integer; state: integer; x: integer; y: integer); +procedure UIContext.mouse(button, state, x, y: integer); begin mouse(button, state, 0, x, y); end; -procedure UIContext.mouseMotion(x: integer; y: integer); +procedure UIContext.mouseMotion(x, y: integer); begin setCursor(x, y); end; -procedure UIContext.keyboard(k: byte; x: integer; y: integer); +procedure UIContext.keyboard(k: byte; x, y: integer); begin setCursor(x, y); m_keyBuffer[m_nbKeys] := k; @@ -1122,6 +1117,8 @@ begin parentGroup^.bounds.y := minBoundY; parentGroup^.bounds.h := maxBoundY - minBoundY; end; + + {$IFDEF DEBUG} m_painter.drawDebugRect(newGroup.bounds); {$ENDIF} end; procedure UIContext.beginFrame(groupFlags: integer; const rect: Rect; style: integer);

glFreeType

  

Free Type support for OpenGL

nvGlutWidgets

  

GLut adaptor class