Commit 698b6d84 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

add global 'rem' base value and rem<>pt<>unit conversion methods

parent d3f3fd14
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -15,12 +15,14 @@
namespace signaltk {

Layer::Layer(
    uint32_t w,
    uint32_t h,
    uint32_t dpi_ /* = 300 */) :
    double w,
    double h,
    double rem_ /* = 12 */,
    double dpi_ /* = 96 */) :
    width(w),
    height(h),
    dpi(dpi_),
    rem(rem_),
    pixmap(PixelFormat::RGBA8, w, h),
    text_shaper(dpi),
    rasterizer(&pixmap, dpi) {}
@@ -43,5 +45,21 @@ void Layer::clear(const Colour& c) {
  pixmap.clear(c);
}

double from_rem(const Layer& l, double v) {
  return from_pt(l, l.rem) * v;
}

double from_px(const Layer& l, double v) {
  return 1.0; // FIXME: dpi scaling
}

double from_pt(const Layer& l, double v) {
  return (v / 72.0) * l.dpi;
}

double to_pt(const Layer& l, double v) {
  return (v / l.dpi) * 72;
}

} // namespace signaltk
+10 −4
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ namespace signaltk {

struct Layer {
  Layer();
  Layer(uint32_t width, uint32_t height, uint32_t dpi = 100);
  Layer(double width, double height, double rem = 12, double dpi = 96);
  ~Layer();
  Layer(const Layer&) = delete;
  Layer& operator=(const Layer&) = delete;
@@ -33,13 +33,19 @@ struct Layer {

  void clear(const Colour& c);

  uint32_t width;
  uint32_t height;
  uint32_t dpi;
  double width;
  double height;
  double rem;
  double dpi;
  Image pixmap;
  text::TextShaper text_shaper;
  Rasterizer rasterizer;
};

double from_rem(const Layer& l, double v);
double from_px(const Layer& l, double v);
double from_pt(const Layer& l, double v);
double to_pt(const Layer& l, double v);

} // namespace signaltk
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ TextStyle::TextStyle() :
    direction(TextDirection::LTR),
    halign(TextHAlign::LEFT),
    valign(TextVAlign::BASELINE),
    font_size(32) {}
    font_size(12) {}

Status drawText(
    const std::string& text,