[teklib-general] teklib: Windows Display: Added font enumeration and UTF-8 suppor...

Timm S. Mueller tmueller at neoscientists.org
Sun Feb 15 17:05:58 CET 2009


details:   http://hg.teklib.org/teklib/rev/7a018a1a8e8f
changeset: 242:7a018a1a8e8f
user:      Timm S. Mueller <tmueller at neoscientists.org>
date:      Sat Feb 07 00:43:20 2009 +0100
description:
Windows Display: Added font enumeration and UTF-8 support; X11 Display: UTF-8
conversion now using a static buffer

diffs (truncated from 1102 to 100 lines):

diff -r 49bede4a3e31 -r 7a018a1a8e8f src/display_windows/build/tmkmakefile
--- a/src/display_windows/build/tmkmakefile	Fri Jan 23 00:07:35 2009 +0100
+++ b/src/display_windows/build/tmkmakefile	Sat Feb 07 00:43:20 2009 +0100
@@ -16,7 +16,8 @@
 		display_windows
 		$(OBJDIR)/display_win_mod.mo \
 		$(OBJDIR)/display_win_api.mo \
-		$(OBJDIR)/display_win_font.mo
+		$(OBJDIR)/display_win_font.mo \
+		$(OBJDIR)/display_win_utf8.mo
 	[/embed]
 	[embed body="moddep"]
 		$(OBJDIR)/display_win_mod.mo
@@ -33,6 +34,11 @@
 		display_win_font.c
 		display_win_mod.h
 	[/embed]
+	[embed body="moddep"]
+		$(OBJDIR)/display_win_utf8.mo
+		display_win_utf8.c
+		display_win_mod.h
+	[/embed]
 [/body]
 
 [include name="BUILD:builds.tmk"/]
diff -r 49bede4a3e31 -r 7a018a1a8e8f src/display_windows/display_win_api.c
--- a/src/display_windows/display_win_api.c	Fri Jan 23 00:07:35 2009 +0100
+++ b/src/display_windows/display_win_api.c	Sat Feb 07 00:43:20 2009 +0100
@@ -205,9 +205,11 @@
 	struct FBPen *pen = TAlloc(mod->fbd_MemMgr, sizeof(struct FBPen));
 	if (pen)
 	{
+		COLORREF col = RGB2COLORREF(rgb);
 		pen->rgb = rgb;
-		pen->brush = CreateSolidBrush(RGB2COLORREF(rgb));
-		pen->pen = CreatePen(PS_SOLID, 0, RGB2COLORREF(rgb));
+		pen->col = col;
+		pen->brush = CreateSolidBrush(col);
+		pen->pen = CreatePen(PS_SOLID, 0, col);
 		TAddTail(&v->penlist, &pen->node);
 		req->tvr_Op.AllocPen.Pen = (TVPEN) pen;
 		return;
@@ -295,12 +297,12 @@
 fb_drawstrip(WINDISPLAY *mod, struct TVFBRequest *req)
 {
 	TINT i, x0, y0, x1, y1, x2, y2;
-	WINWINDOW *v = req->tvr_Op.Strip.Window;
+// 	WINWINDOW *v = req->tvr_Op.Strip.Window;
 	TINT *array = req->tvr_Op.Strip.Array;
 	TINT num = req->tvr_Op.Strip.Num;
-	TTAGITEM *tags = req->tvr_Op.Strip.Tags;
-	TVPEN pen = (TVPEN) TGetTag(tags, TVisual_Pen, TVPEN_UNDEFINED);
-	TVPEN *penarray = (TVPEN *) TGetTag(tags, TVisual_PenArray, TNULL);
+// 	TTAGITEM *tags = req->tvr_Op.Strip.Tags;
+// 	TVPEN pen = (TVPEN) TGetTag(tags, TVisual_Pen, TVPEN_UNDEFINED);
+// 	TVPEN *penarray = (TVPEN *) TGetTag(tags, TVisual_PenArray, TNULL);
 
 	if (num < 3) return;
 
@@ -340,12 +342,12 @@
 fb_drawfan(WINDISPLAY *mod, struct TVFBRequest *req)
 {
 	TINT i, x0, y0, x1, y1, x2, y2;
-	WINWINDOW *v = req->tvr_Op.Fan.Window;
+// 	WINWINDOW *v = req->tvr_Op.Fan.Window;
 	TINT *array = req->tvr_Op.Fan.Array;
 	TINT num = req->tvr_Op.Fan.Num;
-	TTAGITEM *tags = req->tvr_Op.Fan.Tags;
-	TVPEN pen = (TVPEN) TGetTag(tags, TVisual_Pen, TVPEN_UNDEFINED);
-	TVPEN *penarray = (TVPEN *) TGetTag(tags, TVisual_PenArray, TNULL);
+// 	TTAGITEM *tags = req->tvr_Op.Fan.Tags;
+// 	TVPEN pen = (TVPEN) TGetTag(tags, TVisual_Pen, TVPEN_UNDEFINED);
+// 	TVPEN *penarray = (TVPEN *) TGetTag(tags, TVisual_PenArray, TNULL);
 
 	if (num < 3) return;
 
@@ -642,30 +644,27 @@
 LOCAL void
 fb_drawtext(WINDISPLAY *mod, struct TVFBRequest *req)
 {
-// 	WINWINDOW *v = req->tvr_Op.Text.Window;
-// 	TSTRPTR text = req->tvr_Op.Text.Text;
-// 	TINT len = req->tvr_Op.Text.Length;
-// 	TUINT x = req->tvr_Op.Text.X;
-// 	TUINT y = req->tvr_Op.Text.Y;
-// 	TINT w;
-// 	TINT h = ((struct FontNode *) v->curfont)->height;
-// 	struct FBPen *fgpen = (struct FBPen *) req->tvr_Op.Text.FgPen;
-// 	struct FBPen *bgpen = (struct FBPen *) req->tvr_Op.Text.BgPen;
-// 	TINT ascent = ((struct FontNode *) v->curfont)->ascent;
-	//IDirectFBFont *f = ((struct FontNode *) v->curfont)->font;
+	WINWINDOW *v = req->tvr_Op.Text.Window;
+	TSTRPTR text = req->tvr_Op.Text.Text;
+	TINT len = req->tvr_Op.Text.Length;
+	TUINT x = req->tvr_Op.Text.X;
+	TUINT y = req->tvr_Op.Text.Y;
+	struct FBPen *fgpen = (struct FBPen *) req->tvr_Op.Text.FgPen;
+	struct FBPen *bgpen = (struct FBPen *) req->tvr_Op.Text.BgPen;
+	TSTRPTR latin = fb_utf8tolatin(mod, text, len, &len);
 


More information about the teklib-general mailing list