int LOBJECT_METHOD(getFontOutline, TTF_Font * font){ int result = TTF_GetFontOutline(font); state.push_integer(result); return 1; }
//TTF_GetFontOutline int SDLFont::getOutline() { return TTF_GetFontOutline(this->fontContext); }
void draw_table(int x0, int y0) { int i,w=0,h; SDL_Rect r, r2; Uint32 color[7]; SDL_Color fg={0,0,0,255}; #if RENDER_MODE==1 SDL_Color bg={255,255,255,255}; #endif color[0]=SDL_MapRGB(screen->format,255,0,0); color[1]=SDL_MapRGB(screen->format,255,128,0); color[2]=SDL_MapRGB(screen->format,255,255,0); color[3]=SDL_MapRGB(screen->format,0,0,0); color[4]=SDL_MapRGB(screen->format,0,255,0); color[5]=SDL_MapRGB(screen->format,0,0,255); color[6]=SDL_MapRGB(screen->format,128,0,128); /* detemine max font advance for this page */ for(i=0;i<128;i++) if(w<gm[i].advance) w=gm[i].advance; h=TTF_FontLineSkip(font); for(i=0; i<17; i++) { /* draw max font advance grid (for this page) */ r.x=x0+i*(w+SPACING)-SPACING/2-1; r.y=y0-SPACING/2-1; r.w=1; r.h=(h+SPACING)*8+1; SDL_FillRect(screen,&r,color[5]); } for(i=0; i<9; i++) { if(i<8) { /* draw font ascent line */ r.x=x0-SPACING/2-1; r.y=y0+i*(h+SPACING)-SPACING/2+TTF_FontAscent(font); r.w=(w+SPACING)*16; printf("1111 x: %d y: %d w: %d \n", r.x, r.y, r.w); r.h=1; SDL_FillRect(screen,&r,color[3]); /* draw font height line */ r.x=x0-SPACING/2-1; r.y=y0+i*(h+SPACING)-SPACING/2+TTF_FontHeight(font); r.w=(w+SPACING)*16; r.h=1; SDL_FillRect(screen,&r,color[2]); } /* draw max height grid */ r.x=x0-SPACING/2-1; r.y=y0+i*(h+SPACING)-SPACING/2-1; r.w=(w+SPACING)*16; r.h=1; printf("222 x: %d y: %d w: %d \n", r.x, r.y, r.w); SDL_FillRect(screen,&r,color[5]); } r.x=x0; r.y=y0-h; for(i=0;i<128;i++) { /* relocate for next line... */ if(!(i%16)) { r.x=x0; r.y+=h+SPACING; } /* draw the bounding box */ #if RENDER_MODE==1 r2.x=r.x+gm[i].minx-1; r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy-1; r2.w=text[i]->w+2; r2.h=text[i]->h+2; SDL_FillRect(screen,&r2,color[4]); #else r2.x=r.x+gm[i].minx-1; r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy-1; r2.w=text[i]->w+2; r2.h=1; SDL_FillRect(screen,&r2,color[4]); r2.x=r.x+gm[i].minx-1; r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy-1; r2.w=1; r2.h=text[i]->h+2; SDL_FillRect(screen,&r2,color[4]); r2.x=r.x+gm[i].minx-1; r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy+text[i]->h; r2.w=text[i]->w+2; r2.h=1; SDL_FillRect(screen,&r2,color[4]); r2.x=r.x+gm[i].minx+text[i]->w; r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy-1; r2.w=1; r2.h=text[i]->h+2; SDL_FillRect(screen,&r2,color[4]); #endif /* draw advance line */ r2.x=r.x+gm[i].advance; r2.w=1; r2.y=r.y; r2.h=h; SDL_FillRect(screen,&r2,color[0]); /* draw the glyph (from cache) */ r2.x=r.x+gm[i].minx-TTF_GetFontOutline(font); r2.y=r.y+TTF_FontAscent(font)-gm[i].maxy-TTF_GetFontOutline(font); SDL_BlitSurface(text[i],0,screen,&r2); r.x+=w+SPACING; } r.x=x0-TTF_GetFontOutline(font); r.y+=h+SPACING-TTF_GetFontOutline(font); { /* pick a panagram... */ const char *msg="Sphinx of black quartz, judge my vow!"; /*"The quick brown fox jumps over the lazy dog";*/ SDL_Surface *surf= #if RENDER_MODE==0 TTF_RenderText_Solid(font,msg,fg); #elif RENDER_MODE==1 TTF_RenderText_Shaded(font,msg,fg,bg); #elif RENDER_MODE==2 TTF_RenderText_Blended(font,msg,fg); #endif if(surf) { SDL_BlitSurface(surf,0,screen,&r); SDL_FreeSurface(surf); } } }
static mrb_value mrb_sdl2_ttf_font_get_outline(mrb_state *mrb, mrb_value self) { return mrb_fixnum_value(TTF_GetFontOutline(mrb_sdl2_font_get_ptr(mrb, self))); }