diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/frame.h | 10 | ||||
-rw-r--r-- | src/render.c | 25 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/frame.h b/src/frame.h index 8327f56..dbb7efe 100644 --- a/src/frame.h +++ b/src/frame.h @@ -45,6 +45,13 @@ typedef enum } Direction; +typedef enum +{ + UNITS_SLIDE, + UNITS_FRAC +} LengthUnits; + + struct layout_parameters { double margin_l; @@ -59,8 +66,11 @@ struct layout_parameters double x; double y; + double w; + LengthUnits w_units; double h; + LengthUnits h_units; }; diff --git a/src/render.c b/src/render.c index f879b99..f14d351 100644 --- a/src/render.c +++ b/src/render.c @@ -507,8 +507,29 @@ static int render_frame(struct frame *fr, cairo_t *cr) sizeof(struct layout_parameters)); } - ch->w = ch->lop.w; - ch->h = ch->lop.h; + switch ( ch->lop.w_units ) { + + case UNITS_SLIDE : + ch->w = ch->lop.w; + break; + + case UNITS_FRAC : + ch->w = fr->w * ch->lop.w; + break; + + } + + switch ( ch->lop.w_units ) { + + case UNITS_SLIDE : + ch->h = ch->lop.h; + break; + + case UNITS_FRAC : + ch->h = fr->h * ch->lop.h; + break; + + } render_frame(ch, cr); |