… | |
… | |
144 | } |
144 | } |
145 | |
145 | |
146 | static void |
146 | static void |
147 | layout_get_pixel_size (CFPlus__Layout self, int *w, int *h) |
147 | layout_get_pixel_size (CFPlus__Layout self, int *w, int *h) |
148 | { |
148 | { |
|
|
149 | PangoRectangle rect; |
|
|
150 | |
|
|
151 | // get_pixel_* wrongly rounds down |
149 | pango_layout_get_pixel_size (self->pl, w, h); |
152 | pango_layout_get_extents (self->pl, 0, &rect); |
150 | |
153 | |
151 | if (!*w) *w = 1; |
154 | rect.width = (rect.width + PANGO_SCALE - 1) / PANGO_SCALE; |
152 | if (!*h) *h = 1; |
155 | rect.height = (rect.height + PANGO_SCALE - 1) / PANGO_SCALE; |
153 | |
156 | |
154 | *w = (*w + 3) & ~3; |
157 | if (!rect.width) rect.width = 1; |
|
|
158 | if (!rect.height) rect.height = 1; |
|
|
159 | |
|
|
160 | *w = rect.width; |
|
|
161 | *h = rect.height; |
155 | } |
162 | } |
156 | |
163 | |
157 | typedef uint16_t mapface; |
164 | typedef uint16_t mapface; |
158 | |
165 | |
159 | typedef struct { |
166 | typedef struct { |
… | |
… | |
1025 | PUSHs (sv_2mortal (newSViv (strong_pos.y / PANGO_SCALE))); |
1032 | PUSHs (sv_2mortal (newSViv (strong_pos.y / PANGO_SCALE))); |
1026 | PUSHs (sv_2mortal (newSViv (strong_pos.height / PANGO_SCALE))); |
1033 | PUSHs (sv_2mortal (newSViv (strong_pos.height / PANGO_SCALE))); |
1027 | } |
1034 | } |
1028 | |
1035 | |
1029 | void |
1036 | void |
1030 | render (CFPlus::Layout self, float x, float y) |
1037 | render (CFPlus::Layout self, float x, float y, int flags = 0) |
1031 | PPCODE: |
1038 | PPCODE: |
1032 | pango_opengl_render_layout_subpixel ( |
1039 | pango_opengl_render_layout_subpixel ( |
1033 | self->pl, |
1040 | self->pl, |
1034 | x * PANGO_SCALE, y * PANGO_SCALE, |
1041 | x * PANGO_SCALE, y * PANGO_SCALE, |
1035 | self->r, self->g, self->b, self->a |
1042 | self->r, self->g, self->b, self->a, |
|
|
1043 | flags |
1036 | ); |
1044 | ); |
1037 | |
1045 | |
1038 | MODULE = CFPlus PACKAGE = CFPlus::Texture |
1046 | MODULE = CFPlus PACKAGE = CFPlus::Texture |
1039 | |
1047 | |
1040 | void |
1048 | void |
… | |
… | |
1802 | const_iv (GL_SEPARABLE_2D), |
1810 | const_iv (GL_SEPARABLE_2D), |
1803 | const_iv (GL_CONVOLUTION_2D), |
1811 | const_iv (GL_CONVOLUTION_2D), |
1804 | const_iv (GL_CONVOLUTION_BORDER_MODE), |
1812 | const_iv (GL_CONVOLUTION_BORDER_MODE), |
1805 | const_iv (GL_CONSTANT_BORDER), |
1813 | const_iv (GL_CONSTANT_BORDER), |
1806 | const_iv (GL_LINES), |
1814 | const_iv (GL_LINES), |
|
|
1815 | const_iv (GL_LINE_STRIP), |
1807 | const_iv (GL_LINE_LOOP), |
1816 | const_iv (GL_LINE_LOOP), |
1808 | const_iv (GL_QUADS), |
1817 | const_iv (GL_QUADS), |
1809 | const_iv (GL_QUAD_STRIP), |
1818 | const_iv (GL_QUAD_STRIP), |
1810 | const_iv (GL_TRIANGLES), |
1819 | const_iv (GL_TRIANGLES), |
1811 | const_iv (GL_TRIANGLE_STRIP), |
1820 | const_iv (GL_TRIANGLE_STRIP), |
… | |
… | |
2008 | |
2017 | |
2009 | void glEndList () |
2018 | void glEndList () |
2010 | |
2019 | |
2011 | void glCallList (int list) |
2020 | void glCallList (int list) |
2012 | |
2021 | |
2013 | |
|
|