aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/frame.h10
-rw-r--r--src/render.c25
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);