[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