static void SplashLayout() { unichar_t *start, *pt, *lastspace; extern const char *source_modtime_str; extern const char *source_version_str; uc_strcpy(msg, "When my father finished his book on Renaissance printing (The Craft of Printing and the Publication of Shakespeare's Works) he told me that I would have to write the chapter on computer typography. This is my attempt to do so."); GDrawSetFont(splashw,splash_font); linecnt = 0; lines[linecnt++] = msg-1; for ( start = msg; *start!='\0'; start = pt ) { lastspace = NULL; for ( pt=start; ; ++pt ) { if ( *pt==' ' || *pt=='\0' ) { if ( GDrawGetTextWidth(splashw,start,pt-start)<splashimage.u.image->width-10 ) lastspace = pt; else break; if ( *pt=='\0' ) break; } } if ( lastspace!=NULL ) pt = lastspace; lines[linecnt++] = pt; if ( *pt ) ++pt; } uc_strcpy(pt, " FontForge used to be named PfaEdit."); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcpy(pt," git hash: ");; pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcat(pt, FONTFORGE_GIT_VERSION); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcpy(pt," Version: ");; uc_strcat(pt,FONTFORGE_MODTIME_STR); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcat(pt," ("); uc_strcat(pt,FONTFORGE_MODTIME_STR); uc_strcat(pt,"-ML"); #ifdef FREETYPE_HAS_DEBUGGER uc_strcat(pt,"-TtfDb"); #endif uc_strcat(pt,")"); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcpy(pt," Lib Version: "); uc_strcat(pt,FONTFORGE_MODTIME_STR); lines[linecnt++] = pt+u_strlen(pt); lines[linecnt] = NULL; is = u_strchr(msg,'('); ie = u_strchr(msg,')'); }
/* between those rows, and then the widths of each tab */ static void GTabSet_Remetric(GTabSet *gts) { int bbp = GBoxBorderWidth(gts->g.base,gts->g.box); int bp = bbp + GDrawPointsToPixels(gts->g.base,5); int r, r2, width, i; int as, ds, ld; int ni = GDrawPointsToPixels(gts->g.base,NEST_INDENT), in; GDrawSetFont(gts->g.base,gts->font); GDrawWindowFontMetrics(gts->g.base,gts->font,&as,&ds,&ld); gts->as = as; gts->fh = as+ds; gts->rowh = as+ds + bbp+GDrawPointsToPixels(gts->g.base,3); gts->ds = ds + bbp+GDrawPointsToPixels(gts->g.base,1); gts->arrow_size = as+ds; gts->arrow_width = gts->arrow_size + 2*GBoxBorderWidth(gts->g.base,gts->g.box); gts->vert_list_width = 0; for ( i=0; i<gts->tabcnt; ++i ) { gts->tabs[i].tw = GDrawGetTextWidth(gts->g.base,gts->tabs[i].name,-1); gts->tabs[i].width = gts->tabs[i].tw + 2*bp; in = gts->tabs[i].nesting*ni; if ( gts->tabs[i].tw+in > gts->vert_list_width ) gts->vert_list_width = gts->tabs[i].tw+in; } if ( gts->vsb ) { gts->vert_list_width += gts->vsb->r.width; if ( gts->g.inner.height>26 ) { int bp = GBoxBorderWidth(gts->g.base,gts->g.box); GScrollBarSetBounds(gts->vsb,0,gts->tabcnt,(gts->g.r.height-2*bp-6)/gts->fh); } } gts->vert_list_width += 8; if ( gts->vertical ) { /* Nothing much to do */ } else if ( gts->scrolled ) { free(gts->rowstarts); gts->rowstarts = malloc(2*sizeof(16)); gts->rowstarts[0] = 0; gts->rowstarts[1] = gts->tabcnt; gts->rcnt = 1; } else { width = gts->g.r.width-2*GBoxBorderWidth(gts->g.base,gts->g.box); r = GTabSetRCnt(gts,width); if ( gts->offset_per_row!=0 && r>1 ) while ( (r2 = GTabSetRCnt(gts,width-(r-1)*gts->offset_per_row))!=r ) r = r2; free(gts->rowstarts); gts->rowstarts = malloc((r+1)*sizeof(int16)); gts->rcnt = r; gts->rowstarts[r] = gts->tabcnt; for ( i=r=0; i<gts->tabcnt; ++i ) { if ( gts->tabs[i].x==0 ) gts->rowstarts[r++] = i; } /* if there is a single tab on the last line and there are more on */ /* the previous line, then things look nicer if we move one of the */ /* tabs from the previous line onto the last line */ /* Providing it fits, of course */ if ( gts->rowstarts[r]-gts->rowstarts[r-1]==1 && r>1 && gts->rowstarts[r-1]-gts->rowstarts[r-2]>1 && gts->tabs[i-1].width+gts->tabs[i-2].width < width-(r-1)*gts->offset_per_row ) --gts->rowstarts[r-1]; GTabSetFigureWidths(gts); } }
static void SplashLayout() { unichar_t *start, *pt, *lastspace; extern const char *source_modtime_str; extern const char *source_version_str; uc_strcpy(msg, "When my father finished his book on Renaissance printing (The Craft of Printing and the Publication of Shakespeare's Works) he told me that I would have to write the chapter on computer typography. This is my attempt to do so."); GDrawSetFont(splashw,splash_font); linecnt = 0; lines[linecnt++] = msg-1; for ( start = msg; *start!='\0'; start = pt ) { lastspace = NULL; for ( pt=start; ; ++pt ) { if ( *pt==' ' || *pt=='\0' ) { if ( GDrawGetTextWidth(splashw,start,pt-start,NULL)<splashimage.u.image->width-10 ) lastspace = pt; else break; if ( *pt=='\0' ) break; } } if ( lastspace!=NULL ) pt = lastspace; lines[linecnt++] = pt; if ( *pt ) ++pt; } uc_strcpy(pt, " FontForge used to be named PfaEdit."); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcpy(pt," Version: ");; uc_strcat(pt,source_modtime_str); uc_strcat(pt," ("); uc_strcat(pt,source_version_str); #ifdef FONTFORGE_CONFIG_TYPE3 uc_strcat(pt,"-ML"); #endif #ifdef FREETYPE_HAS_DEBUGGER uc_strcat(pt,"-TtfDb"); #endif #ifdef _NO_PYTHON uc_strcat(pt,"-NoPython"); #endif #ifdef FONTFORGE_CONFIG_USE_LONGDOUBLE uc_strcat(pt,"-LD"); #elif defined(FONTFORGE_CONFIG_USE_DOUBLE) uc_strcat(pt,"-D"); #endif #ifndef FONTFORGE_CONFIG_DEVICETABLES uc_strcat(pt,"-NoDevTab"); #endif uc_strcat(pt,")"); pt += u_strlen(pt); lines[linecnt++] = pt; uc_strcpy(pt," Library Version: "); uc_strcat(pt,library_version_configuration.library_source_modtime_string); lines[linecnt++] = pt+u_strlen(pt); lines[linecnt] = NULL; is = u_strchr(msg,'('); ie = u_strchr(msg,')'); }