Skip to content

Commit

Permalink
add layer/set-font{,-size}
Browse files Browse the repository at this point in the history
  • Loading branch information
asmuth committed May 9, 2020
1 parent f85a0ef commit b130cb4
Show file tree
Hide file tree
Showing 21 changed files with 106 additions and 58 deletions.
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/barchart_ranges.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
scale-x (categorical (A B C D E F))
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/errorbars_log.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (0 1000)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/line_markers.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (-4 5)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/multiple_y_axes.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 768px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 7200)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/scalarfield.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (-500 500)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/scatterplot_colors.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 400)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/scatterplot_with_labels.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 60)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/streamgraph.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 768px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (-80 80)
Expand Down
2 changes: 1 addition & 1 deletion doc/examples/charts-scientific/vectorfield.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (-4 4)
Expand Down
2 changes: 2 additions & 0 deletions src/commands.h
Expand Up @@ -22,6 +22,8 @@ namespace clip {
const CommandMap COMMANDS = {
{"layer/resize", bind_cmd(&layer_resize)},
{"layer/set-dpi", bind_cmd(&layer_set_dpi)},
{"layer/set-font", bind_cmd(&layer_set_font)},
{"layer/set-font-size", bind_cmd(&layer_set_font_size)},
{"tools/plotgen", bind_cmd(&plot_eval)},
};

Expand Down
103 changes: 75 additions & 28 deletions src/layer.cc
Expand Up @@ -61,12 +61,6 @@ void layer_resize(
layer->height = height;
}

void layer_set_dpi(
Layer* layer,
double dpi) {
layer->dpi = dpi;
}

ReturnCode layer_resize(
Context* ctx,
const Expr* expr) {
Expand All @@ -89,6 +83,28 @@ ReturnCode layer_resize(
return OK;
}

Layer* layer_get(Context* ctx) {
return ctx->layer.get();
}

const Layer* layer_get(const Context* ctx) {
return ctx->layer.get();
}

double layer_get_dpi(const Layer* layer) {
return layer->dpi;
}

double layer_get_dpi(const Context* ctx) {
return layer_get_dpi(layer_get(ctx));
}

void layer_set_dpi(
Layer* layer,
double dpi) {
layer->dpi = dpi;
}

ReturnCode layer_set_dpi(
Context* ctx,
const Expr* expr) {
Expand All @@ -106,47 +122,78 @@ ReturnCode layer_set_dpi(
return OK;
}

Layer* layer_get(Context* ctx) {
return ctx->layer.get();
Measure layer_get_rem(const Layer* ctx) {
auto rem_default = from_px(16);
auto rem = ctx->font_size;
convert_unit_typographic(ctx->dpi, rem_default, &rem);
return rem;
}

const Layer* layer_get(const Context* ctx) {
return ctx->layer.get();
Measure layer_get_rem(const Context* ctx) {
return layer_get_rem(layer_get(ctx));
}

double layer_get_dpi(const Context* ctx) {
return layer_get_dpi(layer_get(ctx));
}

double layer_get_dpi(const Layer* layer) {
return layer->dpi;
const FontInfo& layer_get_font(const Layer* layer) {
return layer->font;
}

Measure layer_get_rem(const Context* ctx) {
return layer_get_rem(layer_get(ctx));
const FontInfo& layer_get_font(const Context* ctx) {
return layer_get_font(layer_get(ctx));
}

Measure layer_get_rem(const Layer* ctx) {
auto rem_default = from_px(16);
auto rem = ctx->font_size;
convert_unit_typographic(ctx->dpi, rem_default, &rem);
return rem;
void layer_set_font(
Layer* layer,
FontInfo font) {
layer->font = std::move(font);
}

const FontInfo& layer_get_font(const Context* ctx) {
return layer_get_font(layer_get(ctx));
ReturnCode layer_set_font(
Context* ctx,
const Expr* expr) {
auto args = expr_collect(expr);
if (args.size() != 1) {
return err_invalid_nargs(args.size(), 1);
}

FontInfo font;
if (auto rc = expr_call_string(args[0], bind(&font_load_best, _1, &font)); !rc) {
return rc;
}

layer_set_font(layer_get(ctx), std::move(font));
return OK;
}

const FontInfo& layer_get_font(const Layer* layer) {
return layer->font;
Measure layer_get_font_size(const Layer* layer) {
return layer->font_size;
}

Measure layer_get_font_size(const Context* ctx) {
return layer_get_font_size(layer_get(ctx));
}

Measure layer_get_font_size(const Layer* layer) {
return layer->font_size;
void layer_set_font_size(
Layer* layer,
Measure font_size) {
layer->font_size = font_size;
}

ReturnCode layer_set_font_size(
Context* ctx,
const Expr* expr) {
auto args = expr_collect(expr);
if (args.size() != 1) {
return err_invalid_nargs(args.size(), 1);
}

Measure font_size;
if (auto rc = measure_read(args[0], &font_size); !rc) {
return rc;
}

layer_set_font_size(layer_get(ctx), font_size);
return OK;
}

} // namespace clip
Expand Down
23 changes: 11 additions & 12 deletions src/layer.h
Expand Up @@ -54,28 +54,27 @@ ReturnCode layer_resize(
Context* ctx,
const Expr* expr);

void layer_set_dpi(
Layer* layer,
double dpi);

ReturnCode layer_set_dpi(
Context* ctx,
const Expr* expr);

Layer* layer_get(Context* ctx);
const Layer* layer_get(const Context* ctx);

double layer_get_dpi(const Context* ctx);
double layer_get_dpi(const Layer* layer);
double layer_get_dpi(const Context* ctx);
void layer_set_dpi(Layer* layer, double dpi);
ReturnCode layer_set_dpi(Context* ctx, const Expr* expr);

Measure layer_get_rem(const Context* ctx);
Measure layer_get_rem(const Layer* layer);
Measure layer_get_rem(const Context* ctx);

const FontInfo& layer_get_font(const Context* ctx);
const FontInfo& layer_get_font(const Layer* layer);
const FontInfo& layer_get_font(const Context* ctx);
FontInfo layer_set_font(const Layer* layer, FontInfo font);
ReturnCode layer_set_font(Context* ctx, const Expr* expr);

Measure layer_get_font_size(const Context* ctx);
Measure layer_get_font_size(const Layer* layer);
Measure layer_get_font_size(const Context* ctx);
Measure layer_set_font_size(const Layer* layer, Measure font_size);
ReturnCode layer_set_font_size(Context* ctx, const Expr* expr);


} // namespace clip

Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_barchart_ranges.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
scale-x (categorical (A B C D E F))
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_errorbars_log.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (0 1000)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_line_markers.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (-4 5)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_multiple_y_axes.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 768px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 7200)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_scalarfield.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (-500 500)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_scatterplot_colors.clp
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 400)
Expand Down
@@ -1,6 +1,6 @@
(layer/resize 1600px 900px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (0 60)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_streamgraph.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 768px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-y (-80 80)
Expand Down
2 changes: 1 addition & 1 deletion test/examples/charts_scientific_vectorfield.clp
@@ -1,6 +1,6 @@
(layer/resize 2048px 1024px)
(layer/set-dpi 240)
;;(layer/set-font "Latin Modern Roman")
(layer/set-font "Latin Modern Roman")

(tools/plotgen
limit-x (-4 4)
Expand Down

0 comments on commit b130cb4

Please sign in to comment.