#include #include #include "stylesheet.h" #include "frame.h" int term_pixel(Frame *f, SSTerm *t, int def) { if (!t) return def; switch (t->type) { case SSTERM_LENGTH_PX: return t->num; break; case SSTERM_NUMBER: case SSTERM_LENGTH_PT: case SSTERM_LENGTH_MM: case SSTERM_LENGTH_CM: case SSTERM_LENGTH_PC: case SSTERM_LENGTH_IN: case SSTERM_EMS: case SSTERM_EXS: return def; case SSTERM_PERCENTAGE: { BlockFormatInfo *bfi = frame_get_blockformatinfo(f); return WIDTH * t->num / 100; } default: return def; } } int term_text_align(SSTerm *t, AlignMode def) { if (!t) return def; switch (t->type) { case SSTERM_IDENT: if (t->id == StringToSSID("center")) return ALIGN_CENTER; else if (t->id == StringToSSID("left")) return ALIGN_LEFT; else if (t->id == StringToSSID("right")) return ALIGN_RIGHT; else if (t->id == StringToSSID("justify")) return ALIGN_JUSTIFY; default: return def; } } SSTerm term_line_height(Frame *f, SSTerm *t, SSTerm def) { if (!t) return def; switch (t->type) { case SSTERM_NUMBER: case SSTERM_LENGTH_PT: case SSTERM_LENGTH_MM: case SSTERM_LENGTH_CM: case SSTERM_LENGTH_PC: case SSTERM_LENGTH_IN: case SSTERM_LENGTH_PX: case SSTERM_EMS: case SSTERM_EXS: return *t; case SSTERM_IDENT: if (t->id == StringToSSID("normal")) { SSTerm ret = { SSTERM_NUMBER, 1.2, 0, NULL }; return ret; } case SSTERM_PERCENTAGE: /* change to length */ /* font size * percent */ default: return def; } } int dummy(SSTerm *t) { switch (t->type) { case SSTERM_NUMBER: case SSTERM_PERCENTAGE: case SSTERM_LENGTH_PT: case SSTERM_LENGTH_MM: case SSTERM_LENGTH_CM: case SSTERM_LENGTH_PC: case SSTERM_LENGTH_IN: case SSTERM_LENGTH_PX: case SSTERM_EMS: case SSTERM_EXS: case SSTERM_IDENT: case SSTERM_STRING: case SSTERM_HEXCOLOR: case SSTERM_URL: case SSTERM_RGB: break; } return 0; }