Overview
Comment: | Do not put the text label of a cylinder directly in the geometric center of the object, but rather shift it downward by 75% of the radius, as that makes the text appear to be more centered and have a more pleasing appearance. See forum post d623f2faa4. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
d81581d8c8b143083f1fefb353e37484 |
User & Date: | drh 2020-11-20 17:56:12 |
References
2020-11-20
| ||
17:58 | • Reply: Minor layout quirks with text in cylinders (artifact: de2667aedc user: drh) | |
Context
2020-11-20
| ||
18:50 | Further improvements to text layout and "fit" with cylinder objects. (check-in: cca4fea4cf user: drh tags: trunk) | |
17:56 | Do not put the text label of a cylinder directly in the geometric center of the object, but rather shift it downward by 75% of the radius, as that makes the text appear to be more centered and have a more pleasing appearance. See forum post d623f2faa4. (check-in: d81581d8c8 user: drh tags: trunk) | |
2020-11-16
| ||
17:41 | Documentation tweaks. (check-in: 397b1b2198 user: drh tags: trunk) | |
Changes
Changes to pikchr.c.
︙ | ︙ | |||
4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 | static void pik_append_txt(Pik *p, PObj *pObj, PBox *pBox){ PNum jw; /* Justification margin relative to center */ PNum ha2 = 0.0; /* Height of the top row of text */ PNum ha1 = 0.0; /* Height of the second "above" row */ PNum hc = 0.0; /* Height of the center row */ PNum hb1 = 0.0; /* Height of the first "below" row of text */ PNum hb2 = 0.0; /* Height of the second "below" row */ int n, i, nz; PNum x, y, orig_y, s; const char *z; PToken *aTxt; unsigned allMask = 0; if( p->nErr ) return; if( pObj->nTxt==0 ) return; aTxt = pObj->aTxt; n = pObj->nTxt; pik_txt_vertical_layout(pObj); x = pObj->ptAt.x; for(i=0; i<n; i++) allMask |= pObj->aTxt[i].eCode; | > | > > > > | 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 | static void pik_append_txt(Pik *p, PObj *pObj, PBox *pBox){ PNum jw; /* Justification margin relative to center */ PNum ha2 = 0.0; /* Height of the top row of text */ PNum ha1 = 0.0; /* Height of the second "above" row */ PNum hc = 0.0; /* Height of the center row */ PNum hb1 = 0.0; /* Height of the first "below" row of text */ PNum hb2 = 0.0; /* Height of the second "below" row */ PNum yBase = 0.0; int n, i, nz; PNum x, y, orig_y, s; const char *z; PToken *aTxt; unsigned allMask = 0; if( p->nErr ) return; if( pObj->nTxt==0 ) return; aTxt = pObj->aTxt; n = pObj->nTxt; pik_txt_vertical_layout(pObj); x = pObj->ptAt.x; for(i=0; i<n; i++) allMask |= pObj->aTxt[i].eCode; if( pObj->type->isLine ){ hc = pObj->sw*1.5; }else if( pObj->type->xInit==cylinderInit ){ yBase = -0.75*pObj->rad; } if( allMask & TP_CENTER ){ for(i=0; i<n; i++){ if( pObj->aTxt[i].eCode & TP_CENTER ){ s = pik_font_scale(pObj->aTxt+i); if( hc<s*p->charHeight ) hc = s*p->charHeight; } } |
︙ | ︙ | |||
4889 4890 4891 4892 4893 4894 4895 | jw = 0.0; } for(i=0; i<n; i++){ PToken *t = &aTxt[i]; PNum xtraFontScale = pik_font_scale(t); PNum nx = 0; orig_y = pObj->ptAt.y; | | | 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 | jw = 0.0; } for(i=0; i<n; i++){ PToken *t = &aTxt[i]; PNum xtraFontScale = pik_font_scale(t); PNum nx = 0; orig_y = pObj->ptAt.y; y = yBase; if( t->eCode & TP_ABOVE2 ) y += 0.5*hc + ha1 + 0.5*ha2; if( t->eCode & TP_ABOVE ) y += 0.5*hc + 0.5*ha1; if( t->eCode & TP_BELOW ) y -= 0.5*hc + 0.5*hb1; if( t->eCode & TP_BELOW2 ) y -= 0.5*hc + hb1 + 0.5*hb2; if( t->eCode & TP_LJUST ) nx -= jw; if( t->eCode & TP_RJUST ) nx += jw; |
︙ | ︙ | |||
7875 7876 7877 7878 7879 7880 7881 | return TCL_OK; } #endif /* PIKCHR_TCL */ | | | 7880 7881 7882 7883 7884 7885 7886 7887 | return TCL_OK; } #endif /* PIKCHR_TCL */ #line 7912 "pikchr.c" |
Changes to pikchr.y.
︙ | ︙ | |||
2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 | static void pik_append_txt(Pik *p, PObj *pObj, PBox *pBox){ PNum jw; /* Justification margin relative to center */ PNum ha2 = 0.0; /* Height of the top row of text */ PNum ha1 = 0.0; /* Height of the second "above" row */ PNum hc = 0.0; /* Height of the center row */ PNum hb1 = 0.0; /* Height of the first "below" row of text */ PNum hb2 = 0.0; /* Height of the second "below" row */ int n, i, nz; PNum x, y, orig_y, s; const char *z; PToken *aTxt; unsigned allMask = 0; if( p->nErr ) return; if( pObj->nTxt==0 ) return; aTxt = pObj->aTxt; n = pObj->nTxt; pik_txt_vertical_layout(pObj); x = pObj->ptAt.x; for(i=0; i<n; i++) allMask |= pObj->aTxt[i].eCode; | > | > > > > | 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 | static void pik_append_txt(Pik *p, PObj *pObj, PBox *pBox){ PNum jw; /* Justification margin relative to center */ PNum ha2 = 0.0; /* Height of the top row of text */ PNum ha1 = 0.0; /* Height of the second "above" row */ PNum hc = 0.0; /* Height of the center row */ PNum hb1 = 0.0; /* Height of the first "below" row of text */ PNum hb2 = 0.0; /* Height of the second "below" row */ PNum yBase = 0.0; int n, i, nz; PNum x, y, orig_y, s; const char *z; PToken *aTxt; unsigned allMask = 0; if( p->nErr ) return; if( pObj->nTxt==0 ) return; aTxt = pObj->aTxt; n = pObj->nTxt; pik_txt_vertical_layout(pObj); x = pObj->ptAt.x; for(i=0; i<n; i++) allMask |= pObj->aTxt[i].eCode; if( pObj->type->isLine ){ hc = pObj->sw*1.5; }else if( pObj->type->xInit==cylinderInit ){ yBase = -0.75*pObj->rad; } if( allMask & TP_CENTER ){ for(i=0; i<n; i++){ if( pObj->aTxt[i].eCode & TP_CENTER ){ s = pik_font_scale(pObj->aTxt+i); if( hc<s*p->charHeight ) hc = s*p->charHeight; } } |
︙ | ︙ | |||
2299 2300 2301 2302 2303 2304 2305 | jw = 0.0; } for(i=0; i<n; i++){ PToken *t = &aTxt[i]; PNum xtraFontScale = pik_font_scale(t); PNum nx = 0; orig_y = pObj->ptAt.y; | | | 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 | jw = 0.0; } for(i=0; i<n; i++){ PToken *t = &aTxt[i]; PNum xtraFontScale = pik_font_scale(t); PNum nx = 0; orig_y = pObj->ptAt.y; y = yBase; if( t->eCode & TP_ABOVE2 ) y += 0.5*hc + ha1 + 0.5*ha2; if( t->eCode & TP_ABOVE ) y += 0.5*hc + 0.5*ha1; if( t->eCode & TP_BELOW ) y -= 0.5*hc + 0.5*hb1; if( t->eCode & TP_BELOW2 ) y -= 0.5*hc + hb1 + 0.5*hb2; if( t->eCode & TP_LJUST ) nx -= jw; if( t->eCode & TP_RJUST ) nx += jw; |
︙ | ︙ |