#ifndef __BLOP_ARC_H__ #define __BLOP_ARC_H__ #include "grob.h" #include "color.h" #include "sym.h" namespace blop { class container; class arc : public grob { private: static sym::linestyle default_linestyle_; static length &default_linewidth_(); static color &default_linecolor_(); static color &default_fillcolor_(); static bool default_draw_line_; static bool default_fill_; static double default_angle1_, default_angle2_; sym::linestyle linestyle_; length linewidth_; color linecolor_; color fillcolor_; bool draw_line_; bool fill_; length x_,y_,rx_,ry_; double angle1_,angle2_; public: static void default_linestyle(sym::linestyle); static void default_linewidth(length l); static void default_linecolor(color &c); static void default_fillcolor(color &c); static void default_draw_line(bool); static void default_fill(bool); static void default_rx(length); static length &default_rx(); static void default_ry(length); static length &default_ry(); static void default_angle1(double); static double default_angle1(); static void default_angle2(double); static double default_angle2(); arc(length x, length y, length rx = default_rx(), length ry = default_ry(), double angle1=default_angle1(), double angle2=default_angle2()); arc &linestyle(sym::linestyle i) { linestyle_ = i; return *this; } int linestyle() const { return linestyle_; } arc &linewidth(length l) { linewidth_ = l; return *this; } const length &linewidth() const { return linewidth_; } arc &linecolor(const color &c) { linecolor_ = c; return *this; } const color &linecolor() const { return linecolor_; } arc &fillcolor(const color &c) { fillcolor_ = c; return *this; } const color &fillcolor() const { return fillcolor_; } arc &draw_line(bool f) { draw_line_ = f; return *this; } bool draw_line() const { return draw_line_; } arc &fill(bool f) { fill_ = f; return *this; } bool fill() const { return fill_; } arc &x(const length &xx) { x_ = xx; return *this; } const length &x() const { return x_; } arc &y(const length &yy) { y_ = yy; return *this; } const length &y() const { return y_; } arc &rx(const length &r) { rx_ = r; return *this; } const length &rx() const { return rx_; } arc &ry(const length &r) { ry_ = r; return *this; } const length &ry() const { return ry_; } arc &angle1(double a) { angle1_ = a; return *this; } double angle1() const { return angle1_; } arc &angle2(double a) { angle2_ = a; return *this; } double angle2() const { return angle2_; } static arc &fdraw(const length &x, const length &y, const length &rx = default_rx(), const length &ry = default_ry(), double angle1 = default_angle1(), double angle2 = default_angle2()); static arc &pdraw(const length &x, const length &y, const length &rx = default_rx(), const length &ry = default_ry(), double angle1 = default_angle1(), double angle2 = default_angle2()); static arc &cdraw(const length &x, const length &y, const length &rx = default_rx(), const length &ry = default_ry(), double angle1 = default_angle1(), double angle2 = default_angle2()); static arc &draw (container *parent, const length &x, const length &y, const length &rx = default_rx(), const length &ry = default_ry(), double angle1 = default_angle1(), double angle2 = default_angle2()); void prepare_for_draw(); void print(terminal *); }; } #endif