[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] gsoc-2019-veeki 3ff5821 3/3: Merge branch 'master' int
From: |
Veeki Yadav |
Subject: |
[freetype2-demos] gsoc-2019-veeki 3ff5821 3/3: Merge branch 'master' into gsoc-2019-veeki |
Date: |
Tue, 18 Jun 2019 21:40:00 -0400 (EDT) |
branch: gsoc-2019-veeki
commit 3ff5821e2e3140c4d033742d6a4cc889fee77628
Merge: c3773ef 85f1bad
Author: gevic <address@hidden>
Commit: gevic <address@hidden>
Merge branch 'master' into gsoc-2019-veeki
---
ChangeLog | 36 +++++++++++-
graph/allegro/rules.mk | 3 +-
graph/batch/rules.mk | 3 +-
graph/beos/rules.mk | 3 +-
graph/gblany.h | 12 ++++
graph/gblblit.c | 153 +++++++++++++++++++------------------------------
graph/gblblit.h | 16 ++----
graph/graph.h | 11 +---
graph/grblit.c | 95 +++---------------------------
graph/grdevice.c | 12 ++--
graph/grobjs.h | 6 +-
graph/os2/rules.mk | 2 +-
graph/win32/rules.mk | 3 +-
graph/x11/rules.mk | 2 +-
src/ftcommon.c | 2 +
src/ftdiff.c | 4 +-
src/ftgrid.c | 2 +-
src/ftmulti.c | 41 ++++++-------
src/ftstring.c | 2 +-
src/ftview.c | 2 +-
20 files changed, 170 insertions(+), 240 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 4e38c02..085347a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,38 @@
-2019-06-10 Alexei Podtelezhnikov <address@hidden>
+2019-06-17 Alexei Podtelezhnikov <address@hidden>
+
+ * src/ftmulti.c (bit): Surface bitmap must belong to surface.
+ * graph/graph.h (grBlitGlyphToBitmap): Clarify documentation.
+ * graph/grdevice.c (grNewSurface): Initialize default blender.
+
+2019-06-17 Alexei Podtelezhnikov <address@hidden>
+
+ * graph/*/rules.mk: Add missing dependency.
+
+2019-06-16 Alexei Podtelezhnikov <address@hidden>
+
+ * graph/grblit.c (grBlitGlyphToBitmap): Move code from here...
+ * graph/gblblit.c (gblender_blit_init): ... to here.
+ * graph/gblblit.h: Updated.
+
+2019-06-15 Alexei Podtelezhnikov <address@hidden>
+
+ [graph] Relocate `gblender' to `grSurface'.
+
+ This will be needed for direct rendering and simplifies gamma setting.
+
+ * graph/grobjs.h (grSurface): Put `bitmap' on top, add `gblender'.
+ * graph/graph.h: s/grSetGlyphGamma/grSetTargetGamma/.
+ * graph/grblit.c (grSetTargetGamma): Move `gblender_init' here...
+ (grBlitGlyphToBitmap): ...from here.
+ * src/ftcommon.c (FTDemo_Display_New): Call `grSetTargetGamma'.
+ * src/ft{diff,grid,string,view,multi}.c: Updated.
+
+2019-06-14 Alexei Podtelezhnikov <address@hidden>
+
+ * graph/gblblit.c (gblender_blit_init): Switch to lookup table.
+ * graph/gblany.h: Updated.
+
+2019-06-12 Alexei Podtelezhnikov <address@hidden>
* src/ttdebug.c (RunIns): Return error like `TT_RunIns'.
(Abort): Add error messages.
diff --git a/graph/allegro/rules.mk b/graph/allegro/rules.mk
index 74da779..d278174 100644
--- a/graph/allegro/rules.mk
+++ b/graph/allegro/rules.mk
@@ -22,7 +22,8 @@ ifdef ALLEGRO
# our compilation rule
#
- $(OBJ_DIR_2)/gralleg.$O : $(GR_ALLEG)/gralleg.c $(GR_ALLEG)/gralleg.h
+ $(OBJ_DIR_2)/gralleg.$O : $(GR_ALLEG)/gralleg.c $(GR_ALLEG)/gralleg.h \
+ $(GRAPH_H)
$(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) \
$I$(subst /,$(COMPILER_SEP),$(GR_ALLEG)) \
$T$(subst /,$(COMPILER_SEP),$@ $<)
diff --git a/graph/batch/rules.mk b/graph/batch/rules.mk
index 2551484..6618c98 100644
--- a/graph/batch/rules.mk
+++ b/graph/batch/rules.mk
@@ -18,7 +18,8 @@ DEVICES += BATCH
# batch driver compilation rule
#
-$(OBJ_DIR_2)/grbatch.$O : $(GR_BATCH)/grbatch.c $(GR_BATCH)/grbatch.h
+$(OBJ_DIR_2)/grbatch.$O : $(GR_BATCH)/grbatch.c $(GR_BATCH)/grbatch.h \
+ $(GRAPH_H)
ifneq ($(LIBTOOL),)
$(LIBTOOL) --mode=compile $(CC) -static $(CFLAGS) \
$(GRAPH_INCLUDES:%=$I%) \
diff --git a/graph/beos/rules.mk b/graph/beos/rules.mk
index cd61a39..c6aee02 100644
--- a/graph/beos/rules.mk
+++ b/graph/beos/rules.mk
@@ -20,7 +20,8 @@ ifeq ($(PLATFORM),beos)
# the rule used to compile the graphics driver
#
- $(OBJ_DIR_2)/grbeos.$(O): $(GR_BEOS)/grbeos.cpp $(GR_BEOS)/grbeos.h
+ $(OBJ_DIR_2)/grbeos.$(O): $(GR_BEOS)/grbeos.cpp $(GR_BEOS)/grbeos.h \
+ $(GRAPH_H)
ifneq ($(LIBTOOL),)
$(LIBTOOL) --mode=compile $(CC) -static $(CFLAGS) \
$(GRAPH_INCLUDES:%=$I%) \
diff --git a/graph/gblany.h b/graph/gblany.h
index 21a1721..7ae46a4 100644
--- a/graph/gblany.h
+++ b/graph/gblany.h
@@ -125,6 +125,18 @@ GCONCAT( _gblender_blit_bgra_, GDST_TYPE )( GBlenderBlit
blit,
}
+static const GBlenderBlitFunc
+GCONCAT( blit_funcs_, GDST_TYPE )[GBLENDER_SOURCE_MAX] =
+{
+ GCONCAT( _gblender_blit_gray8_, GDST_TYPE ),
+ GCONCAT( _gblender_blit_hrgb_, GDST_TYPE ),
+ GCONCAT( _gblender_blit_hbgr_, GDST_TYPE ),
+ GCONCAT( _gblender_blit_vrgb_, GDST_TYPE ),
+ GCONCAT( _gblender_blit_vbgr_, GDST_TYPE ),
+ GCONCAT( _gblender_blit_bgra_, GDST_TYPE )
+};
+
+
/* unset the macros, to prevent accidental re-use
*/
diff --git a/graph/gblblit.c b/graph/gblblit.c
index 4ac0640..5476f16 100644
--- a/graph/gblblit.c
+++ b/graph/gblblit.c
@@ -1,3 +1,4 @@
+#include "grobjs.h"
#include "gblblit.h"
/* blitting gray glyphs
@@ -190,6 +191,17 @@
/* */
+static const GBlenderBlitFunc*
+blit_funcs[GBLENDER_TARGET_MAX] =
+{
+ blit_funcs_gray8,
+ blit_funcs_rgb32,
+ blit_funcs_rgb24,
+ blit_funcs_rgb565,
+ blit_funcs_bgr565
+};
+
+
static void
_gblender_blit_dummy( GBlenderBlit blit,
GBlenderPixel color )
@@ -201,113 +213,58 @@ _gblender_blit_dummy( GBlenderBlit blit,
GBLENDER_APIDEF( int )
gblender_blit_init( GBlenderBlit blit,
- GBlender blender,
int dst_x,
int dst_y,
- GBlenderSourceFormat src_format,
- const unsigned char* src_buffer,
- int src_pitch,
- int src_width,
- int src_height,
- GBlenderTargetFormat dst_format,
- unsigned char* dst_buffer,
- int dst_pitch,
- int dst_width,
- int dst_height )
+ grBitmap* target,
+ grBitmap* glyph )
{
int src_x = 0;
int src_y = 0;
int delta;
- GBlenderBlitFunc blit_func = 0;
- switch ( src_format )
+ GBlenderSourceFormat src_format;
+ const unsigned char* src_buffer = glyph->buffer;
+ int src_pitch = glyph->pitch;
+ int src_width = glyph->width;
+ int src_height = glyph->rows;
+ GBlenderTargetFormat dst_format;
+ unsigned char* dst_buffer = target->buffer;
+ int dst_pitch = target->pitch;
+ int dst_width = target->width;
+ int dst_height = target->rows;
+
+ grSurface* surface = (grSurface*)target;
+
+
+ if ( glyph->grays != 256 )
+ return -2;
+
+ switch ( glyph->mode )
{
- case GBLENDER_SOURCE_GRAY8:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_gray8_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_gray8_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_gray8_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_gray8_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_gray8_gray8;
break;
- default:
- ;
- }
- break;
-
- case GBLENDER_SOURCE_HRGB:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_hrgb_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_hrgb_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_hrgb_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_hrgb_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_hrgb_gray8;
break;
- default:
- ;
- }
- break;
-
- case GBLENDER_SOURCE_HBGR:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_hbgr_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_hbgr_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_hbgr_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_hbgr_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_hbgr_gray8;
break;
- default:
- ;
- }
- break;
-
- case GBLENDER_SOURCE_VRGB:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_vrgb_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_vrgb_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_vrgb_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_vrgb_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_vrgb_gray8;
break;
- default:
- ;
- }
- break;
-
- case GBLENDER_SOURCE_VBGR:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_vbgr_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_vbgr_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_vbgr_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_vbgr_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_vbgr_gray8;
break;
- default:
- ;
- }
- break;
-
- case GBLENDER_SOURCE_BGRA:
- switch ( dst_format )
- {
- case GBLENDER_TARGET_RGB32: blit_func = _gblender_blit_bgra_rgb32;
break;
- case GBLENDER_TARGET_RGB24: blit_func = _gblender_blit_bgra_rgb24;
break;
- case GBLENDER_TARGET_RGB565: blit_func = _gblender_blit_bgra_rgb565;
break;
- case GBLENDER_TARGET_BGR565: blit_func = _gblender_blit_bgra_bgr565;
break;
- case GBLENDER_TARGET_GRAY8: blit_func = _gblender_blit_bgra_gray8;
break;
- default:
- ;
- }
- break;
+ case gr_pixel_mode_gray: src_format = GBLENDER_SOURCE_GRAY8; break;
+ case gr_pixel_mode_lcd: src_format = GBLENDER_SOURCE_HRGB; break;
+ case gr_pixel_mode_lcdv: src_format = GBLENDER_SOURCE_VRGB; break;
+ case gr_pixel_mode_lcd2: src_format = GBLENDER_SOURCE_HBGR; break;
+ case gr_pixel_mode_lcdv2: src_format = GBLENDER_SOURCE_VBGR; break;
+ case gr_pixel_mode_bgra: src_format = GBLENDER_SOURCE_BGRA; break;
+ default:
+ return -2;
+ }
+ switch ( target->mode )
+ {
+ case gr_pixel_mode_gray: dst_format = GBLENDER_TARGET_GRAY8; break;
+ case gr_pixel_mode_rgb32: dst_format = GBLENDER_TARGET_RGB32; break;
+ case gr_pixel_mode_rgb24: dst_format = GBLENDER_TARGET_RGB24; break;
+ case gr_pixel_mode_rgb565: dst_format = GBLENDER_TARGET_RGB565; break;
default:
- ;
+ return -2;
}
- blit->blender = blender;
- blit->blit_func = blit_func;
+ blit->blender = surface->gblender;
+ blit->blit_func = blit_funcs[dst_format][src_format];
- if ( blit_func == 0 )
+ if ( blit->blit_func == 0 )
{
/* unsupported blit mode
*/
@@ -315,6 +272,14 @@ gblender_blit_init( GBlenderBlit blit,
return -2;
}
+ if ( glyph->mode == gr_pixel_mode_lcd ||
+ glyph->mode == gr_pixel_mode_lcd2 )
+ src_width /= 3;
+
+ if ( glyph->mode == gr_pixel_mode_lcdv ||
+ glyph->mode == gr_pixel_mode_lcdv2 )
+ src_height /= 3;
+
if ( dst_x < 0 )
{
src_width += dst_x;
diff --git a/graph/gblblit.h b/graph/gblblit.h
index 4412178..082e7fe 100644
--- a/graph/gblblit.h
+++ b/graph/gblblit.h
@@ -1,6 +1,7 @@
#ifndef GBLBLIT_H_
#define GBLBLIT_H_
+#include "grobjs.h"
#include "gblender.h"
/*
@@ -60,22 +61,13 @@ typedef struct GBlenderBlitRec_
} GBlenderBlitRec;
-
GBLENDER_API( int )
gblender_blit_init( GBlenderBlit blit,
- GBlender blender,
int dst_x,
int dst_y,
- GBlenderSourceFormat src_format,
- const unsigned char* src_buffer,
- int src_pitch,
- int src_width,
- int src_height,
- GBlenderTargetFormat dst_format,
- unsigned char* dst_buffer,
- int dst_pitch,
- int dst_width,
- int dst_height );
+ grBitmap* target,
+ grBitmap* glyph );
+
#define gblender_blit_run(b,color) (b)->blit_func( (b), (color) )
diff --git a/graph/graph.h b/graph/graph.h
index c5cec9e..54d89d1 100644
--- a/graph/graph.h
+++ b/graph/graph.h
@@ -160,7 +160,7 @@
* writes a given glyph bitmap to a target surface.
*
* <Input>
- * target :: handle to target bitmap
+ * target :: handle to target bitmap that belongs to surface
* glyph :: handle to source glyph bitmap
* x :: position of left-most pixel of glyph image in target surface
* y :: position of top-most pixel of glyph image in target surface
@@ -475,11 +475,6 @@
* for the surface. the bitmap's 'pitch' and 'buffer'
* fields are ignored on input.
*
- * On output, the bitmap describes the surface's image
- * completely. It is possible to write directly in it
- * with grBlitGlyphToBitmap, even though the use of
- * grBlitGlyphToSurface is recommended.
- *
* <Return>
* handle to the corresponding surface object. 0 in case of error
*
@@ -663,7 +658,7 @@
/**********************************************************************
*
* <Function>
- * grSetGlyphGamma
+ * grSetTargetGamma
*
* <Description>
* set the gamma-correction coefficient. This is only used to
@@ -675,7 +670,7 @@
**********************************************************************/
extern
- void grSetGlyphGamma( double gamma_value );
+ void grSetTargetGamma( grBitmap* target, double gamma_value );
/* */
diff --git a/graph/grblit.c b/graph/grblit.c
index 02b515c..7c22551 100644
--- a/graph/grblit.c
+++ b/graph/grblit.c
@@ -10,7 +10,6 @@
/****************************************************************************/
#include "grblit.h"
-#include "grobjs.h"
#define GRAY8
@@ -1749,25 +1748,6 @@
}
- /**********************************************************************
- *
- * <Function>
- * grBlitGlyphToBitmap
- *
- * <Description>
- * writes a given glyph bitmap to a target surface.
- *
- * <Input>
- * surface :: handle to target surface
- * x :: position of left-most pixel of glyph image in surface
- * y :: position of top-most pixel of glyph image in surface
- * bitmap :: source glyph image
- *
- * <Return>
- * Error code. 0 means success
- *
- **********************************************************************/
-
typedef void (*grColorGlyphBlitter)( grBlitter* blit,
grColor color,
int max_gray );
@@ -1808,11 +1788,12 @@
#include "gblblit.h"
- static double gr_glyph_gamma = 1.8;
-
- void grSetGlyphGamma( double gamma )
+ void grSetTargetGamma( grBitmap* target, double gamma )
{
- gr_glyph_gamma = gamma;
+ grSurface* surface = (grSurface*)target;
+
+
+ gblender_init( surface->gblender, gamma );
}
@@ -1843,74 +1824,16 @@
/* short cut to alpha blender for certain glyph types
*/
{
- GBlenderSourceFormat src_format;
- GBlenderTargetFormat dst_format;
- int width, height;
GBlenderBlitRec gblit[1];
GBlenderPixel gcolor;
- static GBlenderRec gblender[1];
- static double gblender_gamma = -100.0;
-
- if ( glyph->grays != 256 )
- goto LegacyBlit;
-
- switch ( glyph->mode )
- {
- case gr_pixel_mode_gray: src_format = GBLENDER_SOURCE_GRAY8; break;
- case gr_pixel_mode_lcd: src_format = GBLENDER_SOURCE_HRGB; break;
- case gr_pixel_mode_lcdv: src_format = GBLENDER_SOURCE_VRGB; break;
- case gr_pixel_mode_lcd2: src_format = GBLENDER_SOURCE_HBGR; break;
- case gr_pixel_mode_lcdv2: src_format = GBLENDER_SOURCE_VBGR; break;
- case gr_pixel_mode_bgra: src_format = GBLENDER_SOURCE_BGRA; break;
-
- default:
- goto LegacyBlit;
- }
- width = glyph->width;
- height = glyph->rows;
- if ( glyph->mode == gr_pixel_mode_lcd ||
- glyph->mode == gr_pixel_mode_lcd2 )
- width /= 3;
-
- if ( glyph->mode == gr_pixel_mode_lcdv ||
- glyph->mode == gr_pixel_mode_lcdv2 )
- height /= 3;
-
- switch ( target->mode )
- {
- case gr_pixel_mode_rgb32: dst_format = GBLENDER_TARGET_RGB32; break;
- case gr_pixel_mode_rgb24: dst_format = GBLENDER_TARGET_RGB24; break;
- case gr_pixel_mode_rgb565: dst_format = GBLENDER_TARGET_RGB565; break;
- case gr_pixel_mode_gray: dst_format = GBLENDER_TARGET_GRAY8; break;
- default:
- goto LegacyBlit;
- }
-
- /* initialize blender when needed, i.e. when gamma changes
- */
- if ( gblender_gamma != gr_glyph_gamma )
+ switch ( gblender_blit_init( gblit, x, y, target, glyph ) )
{
- gblender_gamma = gr_glyph_gamma;
- gblender_init( gblender, gblender_gamma );
- }
-
- if ( gblender_blit_init( gblit, gblender,
- x, y,
- src_format,
- glyph->buffer,
- glyph->pitch,
- width,
- height,
- dst_format,
- target->buffer,
- target->pitch,
- target->width,
- target->rows ) < 0 )
- {
- /* nothing to do */
+ case -1: /* nothing to do */
return 0;
+ case -2:
+ goto LegacyBlit;
}
gcolor = ((GBlenderPixel)color.chroma[0] << 16) |
diff --git a/graph/grdevice.c b/graph/grdevice.c
index 27413ee..8b51dd8 100644
--- a/graph/grdevice.c
+++ b/graph/grdevice.c
@@ -110,11 +110,6 @@
* for the surface. the bitmap's 'pitch' and 'buffer'
* fields are ignored on input.
*
- * On output, the bitmap describes the surface's image
- * completely. It is possible to write directly in it
- * with grBlitGlyphToBitmap, even though the use of
- * grBlitGlyphToSurface is recommended.
- *
* <Return>
* handle to the corresponding surface object. 0 in case of error
*
@@ -137,8 +132,8 @@
*
**********************************************************************/
- extern grSurface* grNewSurface( const char* device_name,
- grBitmap* bitmap )
+ grSurface* grNewSurface( const char* device_name,
+ grBitmap* bitmap )
{
grDevice* device;
grSurface* surface;
@@ -155,6 +150,9 @@
grFree( (void *)surface );
surface = 0;
}
+ else
+ grSetTargetGamma( (grBitmap*)surface, 1.8 );
+
return surface;
}
diff --git a/graph/grobjs.h b/graph/grobjs.h
index 0b615d6..92c7f9b 100644
--- a/graph/grobjs.h
+++ b/graph/grobjs.h
@@ -18,6 +18,7 @@
#include "graph.h"
#include "grconfig.h"
#include "grtypes.h"
+#include "gblender.h"
typedef struct grBiColor_
@@ -109,8 +110,11 @@
struct grSurface_
{
- grDevice* device;
grBitmap bitmap;
+
+ GBlenderRec gblender[1];
+
+ grDevice* device;
grBool refresh;
grBool owner;
diff --git a/graph/os2/rules.mk b/graph/os2/rules.mk
index 052ae2c..6305d92 100644
--- a/graph/os2/rules.mk
+++ b/graph/os2/rules.mk
@@ -22,7 +22,7 @@ ifeq ($(PLATFORM),os2)
# the rule used to compile the graphics driver
#
- $(OBJ_DIR_2)/gros2pm.$O: $(GR_OS2)/gros2pm.c $(GR_OS2)/gros2pm.h
+ $(OBJ_DIR_2)/gros2pm.$O: $(GR_OS2)/gros2pm.c $(GR_OS2)/gros2pm.h $(GRAPH_H)
$(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) \
$I$(subst /,$(COMPILER_SEP),$(GR_OS2)) \
$T$(subst /,$(COMPILER_SEP),$@ $<)
diff --git a/graph/win32/rules.mk b/graph/win32/rules.mk
index ccd7850..ef4e749 100644
--- a/graph/win32/rules.mk
+++ b/graph/win32/rules.mk
@@ -19,7 +19,8 @@ ifeq ($(PLATFORM),win32)
# the rule used to compile the graphics driver
#
- $(OBJ_DIR_2)/grwin32.$O: $(GR_WIN32)/grwin32.c $(GR_WIN32)/grwin32.h
+ $(OBJ_DIR_2)/grwin32.$O: $(GR_WIN32)/grwin32.c $(GR_WIN32)/grwin32.h \
+ $(GRAPH_H)
$(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) \
$I$(subst /,$(COMPILER_SEP),$(GR_WIN32)) \
$T$(subst /,$(COMPILER_SEP),$@ $<)
diff --git a/graph/x11/rules.mk b/graph/x11/rules.mk
index a746a54..9aa219a 100644
--- a/graph/x11/rules.mk
+++ b/graph/x11/rules.mk
@@ -112,7 +112,7 @@ ifneq ($(X11_PATH),)
# the rule used to compile the X11 driver
#
- $(OBJ_DIR_2)/grx11.$(O): $(GR_X11)/grx11.c $(GR_X11)/grx11.h
+ $(OBJ_DIR_2)/grx11.$(O): $(GR_X11)/grx11.c $(GR_X11)/grx11.h $(GRAPH_H)
ifneq ($(LIBTOOL),)
$(LIBTOOL) --mode=compile $(CC) -static $(CFLAGS) \
$(GRAPH_INCLUDES:%=$I%) \
diff --git a/src/ftcommon.c b/src/ftcommon.c
index 7f42a9b..19de19f 100644
--- a/src/ftcommon.c
+++ b/src/ftcommon.c
@@ -162,6 +162,8 @@
display->gamma = GAMMA;
+ grSetTargetGamma( display->bitmap, display->gamma );
+
return display;
}
diff --git a/src/ftdiff.c b/src/ftdiff.c
index 3ab8ba1..d0489ce 100644
--- a/src/ftdiff.c
+++ b/src/ftdiff.c
@@ -1014,7 +1014,7 @@
display->bitmap = &surface->bitmap;
display->gamma = GAMMA;
- grSetGlyphGamma( display->gamma );
+ grSetTargetGamma( display->bitmap, display->gamma );
memset( &display->fore_color, 0, sizeof( grColor ) );
memset( &display->back_color, 0xff, sizeof( grColor ) );
@@ -1123,7 +1123,7 @@
else if ( display->gamma < 0.0001 )
display->gamma = 0.0;
- grSetGlyphGamma( display->gamma );
+ grSetTargetGamma( display->bitmap, display->gamma );
}
diff --git a/src/ftgrid.c b/src/ftgrid.c
index 263043b..8dab729 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -1156,7 +1156,7 @@
else if ( display->gamma < 0.0 )
display->gamma = 0.0;
- grSetGlyphGamma( display->gamma );
+ grSetTargetGamma( display->bitmap, display->gamma );
}
diff --git a/src/ftmulti.c b/src/ftmulti.c
index c7313bc..a3b1182 100644
--- a/src/ftmulti.c
+++ b/src/ftmulti.c
@@ -79,7 +79,7 @@
static FT_Error error; /* error returned by FreeType? */
static grSurface* surface; /* current display surface */
- static grBitmap bit; /* current display bitmap */
+ static grBitmap* bit; /* current display bitmap */
static int width = DIM_X; /* window width */
static int height = DIM_Y; /* window height */
@@ -277,12 +277,12 @@
static void
Clear_Display( void )
{
- long bitmap_size = (long)bit.pitch * bit.rows;
+ long bitmap_size = (long)bit->pitch * bit->rows;
if ( bitmap_size < 0 )
bitmap_size = -bitmap_size;
- memset( bit.buffer, 0, (unsigned long)bitmap_size );
+ memset( bit->buffer, 0, (unsigned long)bitmap_size );
}
@@ -290,17 +290,17 @@
static void
Init_Display( void )
{
- grInitDevices();
+ grBitmap bitmap = { height, width, 0, gr_pixel_mode_gray, 256, NULL };
+
- bit.mode = gr_pixel_mode_gray;
- bit.width = width;
- bit.rows = height;
- bit.grays = 256;
+ grInitDevices();
- surface = grNewSurface( 0, &bit );
+ surface = grNewSurface( 0, &bitmap );
if ( !surface )
PanicZ( "could not allocate display surface\n" );
+ bit = (grBitmap*)surface;
+
graph_init = 1;
}
@@ -345,7 +345,8 @@
x_top = x_offset + glyph->bitmap_left;
y_top = y_offset - glyph->bitmap_top;
- grBlitGlyphToBitmap( &bit, &bit3, x_top, y_top, fore_color );
+ grBlitGlyphToBitmap( bit, &bit3,
+ x_top, y_top, fore_color );
return 0;
}
@@ -422,12 +423,12 @@
x += ( ( glyph->metrics.horiAdvance + 32 ) >> 6 ) + 1;
- if ( x + size->metrics.x_ppem > bit.width )
+ if ( x + size->metrics.x_ppem > bit->width )
{
x = start_x;
y += step_y;
- if ( y >= bit.rows )
+ if ( y >= bit->rows )
return FT_Err_Ok;
}
}
@@ -490,12 +491,12 @@
x += ( ( glyph->metrics.horiAdvance + 32 ) >> 6 ) + 1;
- if ( x + size->metrics.x_ppem > bit.width )
+ if ( x + size->metrics.x_ppem > bit->width )
{
x = start_x;
y += step_y;
- if ( y >= bit.rows )
+ if ( y >= bit->rows )
return FT_Err_Ok;
}
}
@@ -532,7 +533,7 @@
grSetLineHeight( 10 );
grGotoxy( 0, 0 );
grSetMargin( 2, 1 );
- grGotobitmap( &bit );
+ grGotobitmap( bit );
sprintf( buf,
"FreeType MM Glyph Viewer - part of the FreeType %s test suite",
@@ -1165,12 +1166,12 @@
if ( !new_header )
new_header = Header;
- grWriteCellString( &bit, 0, 0, new_header, fore_color );
+ grWriteCellString( bit, 0, 0, new_header, fore_color );
new_header = NULL;
sprintf( Header, "PS name: %s",
FT_Get_Postscript_Name( face ) );
- grWriteCellString( &bit, 0, 16, Header, fore_color );
+ grWriteCellString( bit, 0, 16, Header, fore_color );
sprintf( Header, "axes:" );
{
@@ -1195,7 +1196,7 @@
sizeof ( Header ) - strlen( Header ) - 1 );
}
}
- grWriteCellString( &bit, 0, 24, Header, fore_color );
+ grWriteCellString( bit, 0, 24, Header, fore_color );
if ( num_shown_axes > MAX_MM_AXES / 2 )
{
@@ -1220,7 +1221,7 @@
sizeof ( Header ) - strlen( Header ) - 1 );
}
- grWriteCellString( &bit, 0, 32, Header, fore_color );
+ grWriteCellString( bit, 0, 32, Header, fore_color );
}
{
@@ -1258,7 +1259,7 @@
sprintf( Header, "%.100s: not an MM font file, or could not be opened",
ft_basename( argv[file] ) );
- grWriteCellString( &bit, 0, 8, Header, fore_color );
+ grWriteCellString( bit, 0, 8, Header, fore_color );
grRefreshSurface( surface );
if ( !( key = Process_Event() ) )
diff --git a/src/ftstring.c b/src/ftstring.c
index f44303f..5e4c973 100644
--- a/src/ftstring.c
+++ b/src/ftstring.c
@@ -395,7 +395,7 @@
else if ( display->gamma < 0.1 )
display->gamma = 0.1;
- grSetGlyphGamma( display->gamma );
+ grSetTargetGamma( display->bitmap, display->gamma );
}
diff --git a/src/ftview.c b/src/ftview.c
index 78e9113..f196f99 100644
--- a/src/ftview.c
+++ b/src/ftview.c
@@ -919,7 +919,7 @@
else if ( display->gamma < 0.0 )
display->gamma = 0.0;
- grSetGlyphGamma( display->gamma );
+ grSetTargetGamma( display->bitmap, display->gamma );
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] gsoc-2019-veeki 3ff5821 3/3: Merge branch 'master' into gsoc-2019-veeki,
Veeki Yadav <=