diff --git a/sim/fakes/ctx.py b/sim/fakes/ctx.py index 925271793f7113c333034b43daec7040721ab1a6..496614c8d8615d71320497781658c6d516c77411 100644 --- a/sim/fakes/ctx.py +++ b/sim/fakes/ctx.py @@ -106,9 +106,11 @@ class Context: END = "end" MIDDLE = "middle" BEVEL = "bevel" + NONE = "none" def __init__(self, _ctx): self._ctx = _ctx + self._font_size = 0 @property def image_smoothing(self): @@ -152,10 +154,11 @@ class Context: @property def font_size(self): - return None + return self._font_size @font_size.setter def font_size(self, v): + self._font_size = v self._emit(f"fontSize {v:.3f}") @property @@ -166,23 +169,34 @@ class Context: def global_alpha(self, v): self._emit(f"globalAlpha {v:.3f}") + @property + def x(self): + return 0 + + @property + def y(self): + return 0 + def _emit(self, text): _wasm.ctx_parse(self._ctx, text) + def logo(self, x, y, r): + return self + def move_to(self, x, y): - self._emit(f"moveTo {int(x)} {int(y)}") + self._emit(f"moveTo {x:.3f} {y:.3f}") return self def curve_to(self, a, b, c, d, e, f): - self._emit(f"curveTo {int(a)} {int(b)} {int(c)} {int(d)}") + self._emit(f"curveTo {a:.3f} {b:.3f} {c:.3f} {d:.3f} {e:.3f} {f:.3f}") return self def rel_move_to(self, x, y): - self._emit(f"relMoveTo {int(x)} {int(y)}") + self._emit(f"relMoveTo {x:.3f} {y:.3f}") return self def rel_curve_to(self, a, b, c, d, e, f): - self._emit(f"relCurveTo {int(a)} {int(b)} {int(c)} {int(d)}") + self._emit(f"relCurveTo {a:.3f} {b:.3f} {c:.3f} {d:.3f} {e:.3f} {f:.3f}") return self def close_path(self): @@ -190,7 +204,7 @@ class Context: return self def translate(self, x, y): - self._emit(f"translate {int(x)} {int(y)}") + self._emit(f"translate {x:.3f} {y:.3f}") return self def scale(self, x, y): @@ -198,7 +212,7 @@ class Context: return self def line_to(self, x, y): - self._emit(f"lineTo {int(x)} {int(y)}") + self._emit(f"lineTo {x:.3f} {y:.3f}") return self def rotate(self, v): @@ -236,7 +250,7 @@ class Context: def round_rectangle(self, x, y, width, height, radius): self._emit( - f"roundRectangle {int(x)} {int(y)} {int(width)} {int(height)} {radius}" + f"roundRectangle {x:.3f} {y:.3f} {width:.3f} {height:.3f} {radius:.3f}" ) return self @@ -279,7 +293,12 @@ class Context: ) return self - def add_stop(self, pos, red, green, blue, alpha): + def linear_gradient(self, x0, y0, x1, y1): + self._emit(f"linearGradient {x0:.3f} {y0:.3f} {x1:.3f} {y1:.3f}") + return self + + def add_stop(self, pos, color, alpha): + red, green, blue = color if red > 1.0 or green > 1.0 or blue > 1.0: red /= 255.0 green /= 255.0 @@ -302,9 +321,13 @@ class Context: ) return self + def begin_path(self): + self._emit(f"beginPath") + return self + def arc(self, x, y, radius, arc_from, arc_to, direction): self._emit( - f"arc {int(x)} {int(y)} {int(radius)} {arc_from:.4f} {arc_to:.4f} {1 if direction else 0}" + f"arc {x:.3f} {y:.3f} {radius:.3f} {arc_from:.4f} {arc_to:.4f} {1 if direction else 0}" ) return self @@ -312,7 +335,8 @@ class Context: return _wasm.ctx_text_width(self._ctx, text) def clip(self): - return + self._emit(f"clip") + return self def get_font_name(self, i): return [