… | |
… | |
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 { |
… | |
… | |
512 | SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0); |
519 | SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0); |
513 | SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE, 0); |
520 | SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE, 0); |
514 | SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0); |
521 | SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0); |
515 | |
522 | |
516 | SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); |
523 | SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); |
|
|
524 | #if SDL_VERSION_ATLEAST(1,2,10) |
517 | SDL_GL_SetAttribute (SDL_GL_ACCELERATED_VISUAL, 1); |
525 | SDL_GL_SetAttribute (SDL_GL_ACCELERATED_VISUAL, 1); |
518 | SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1); |
526 | SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1); |
|
|
527 | #endif |
519 | |
528 | |
520 | SDL_EnableUNICODE (1); |
529 | SDL_EnableUNICODE (1); |
521 | SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); |
530 | SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); |
522 | |
531 | |
523 | m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); |
532 | m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); |
… | |
… | |
1023 | PUSHs (sv_2mortal (newSViv (strong_pos.y / PANGO_SCALE))); |
1032 | PUSHs (sv_2mortal (newSViv (strong_pos.y / PANGO_SCALE))); |
1024 | PUSHs (sv_2mortal (newSViv (strong_pos.height / PANGO_SCALE))); |
1033 | PUSHs (sv_2mortal (newSViv (strong_pos.height / PANGO_SCALE))); |
1025 | } |
1034 | } |
1026 | |
1035 | |
1027 | void |
1036 | void |
1028 | render (CFPlus::Layout self, float x, float y) |
1037 | render (CFPlus::Layout self, float x, float y, int flags = 0) |
1029 | PPCODE: |
1038 | PPCODE: |
1030 | pango_opengl_render_layout_subpixel ( |
1039 | pango_opengl_render_layout_subpixel ( |
1031 | self->pl, |
1040 | self->pl, |
1032 | x * PANGO_SCALE, y * PANGO_SCALE, |
1041 | x * PANGO_SCALE, y * PANGO_SCALE, |
1033 | self->r, self->g, self->b, self->a |
1042 | self->r, self->g, self->b, self->a, |
|
|
1043 | flags |
1034 | ); |
1044 | ); |
1035 | |
1045 | |
1036 | MODULE = CFPlus PACKAGE = CFPlus::Texture |
1046 | MODULE = CFPlus PACKAGE = CFPlus::Texture |
1037 | |
1047 | |
1038 | void |
1048 | void |
… | |
… | |
1800 | const_iv (GL_SEPARABLE_2D), |
1810 | const_iv (GL_SEPARABLE_2D), |
1801 | const_iv (GL_CONVOLUTION_2D), |
1811 | const_iv (GL_CONVOLUTION_2D), |
1802 | const_iv (GL_CONVOLUTION_BORDER_MODE), |
1812 | const_iv (GL_CONVOLUTION_BORDER_MODE), |
1803 | const_iv (GL_CONSTANT_BORDER), |
1813 | const_iv (GL_CONSTANT_BORDER), |
1804 | const_iv (GL_LINES), |
1814 | const_iv (GL_LINES), |
|
|
1815 | const_iv (GL_LINE_STRIP), |
1805 | const_iv (GL_LINE_LOOP), |
1816 | const_iv (GL_LINE_LOOP), |
1806 | const_iv (GL_QUADS), |
1817 | const_iv (GL_QUADS), |
1807 | const_iv (GL_QUAD_STRIP), |
1818 | const_iv (GL_QUAD_STRIP), |
1808 | const_iv (GL_TRIANGLES), |
1819 | const_iv (GL_TRIANGLES), |
1809 | const_iv (GL_TRIANGLE_STRIP), |
1820 | const_iv (GL_TRIANGLE_STRIP), |
… | |
… | |
2006 | |
2017 | |
2007 | void glEndList () |
2018 | void glEndList () |
2008 | |
2019 | |
2009 | void glCallList (int list) |
2020 | void glCallList (int list) |
2010 | |
2021 | |
2011 | |
|
|