summaryrefslogtreecommitdiff
path: root/pango/pangowin32.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pangowin32.c')
-rw-r--r--pango/pangowin32.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/pango/pangowin32.c b/pango/pangowin32.c
index e3f62a10..b63767e2 100644
--- a/pango/pangowin32.c
+++ b/pango/pangowin32.c
@@ -396,6 +396,41 @@ pango_win32_render (HDC hdc,
g_free (dX);
}
+void
+pango_win32_render_transformed (HDC hdc,
+ const PangoMatrix *matrix,
+ PangoFont *font,
+ PangoGlyphString *glyphs,
+ int x,
+ int y)
+{
+ XFORM xForm;
+ XFORM xFormPrev = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
+ int mode = GetGraphicsMode (hdc);
+
+ if (!SetGraphicsMode (hdc, GM_ADVANCED))
+ g_warning ("SetGraphicsMode() failed");
+ else if (!GetWorldTransform (hdc, &xFormPrev))
+ g_warning ("GetWorldTransform() failed");
+ else if (matrix)
+ {
+ xForm.eM11 = matrix->xx;
+ xForm.eM12 = matrix->xy;
+ xForm.eM21 = matrix->yx;
+ xForm.eM22 = matrix->yy;
+ xForm.eDx = matrix->x0;
+ xForm.eDy = matrix->y0;
+ if (!SetWorldTransform (hdc, &xForm))
+ g_warning ("GetWorldTransform() failed");
+ }
+
+ pango_win32_render (hdc, font, glyphs, x/PANGO_SCALE, y/PANGO_SCALE);
+
+ /* restore */
+ SetWorldTransform (hdc, &xFormPrev);
+ SetGraphicsMode (hdc, mode);
+}
+
static void
pango_win32_font_get_glyph_extents (PangoFont *font,
PangoGlyph glyph,