#include "point.h" #include "canvas.h" #include "exc.H" #include "frame.h" namespace blop { point_drawer *point::default_type_ = new circle(true); color point::default_color_(0,0,0); length point::default_size_(new length::base_id_t(terminal::PS)); point::point() { type_ = default_type_->clone(); size_ = default_size_; color_ = default_color_; } point::~point() { delete type_; } void point::default_pointtype(const point_drawer &t) { delete default_type_; default_type_ = t.clone(); } point &point::pointtype(const point_drawer &t) { delete type_; type_ = t.clone(); return *this; } point &point::pt(const point_drawer &t) { return pointtype(t); } const point_drawer &point::pointtype() const { return *type_; } void point::default_pointcolor(const color &c) { default_color_ = c; } point &point::pointcolor(const color &c) { color_ = c; return *this; } point &point::pc(const color &c) { return pointcolor(c); } const color &point::pointcolor() const {return color_;} void point::default_pointsize(const length &l) { default_size_ = l; } point &point::pointsize(const length &l) { size_ = l; return *this; } point &point::ps(const length &l) { return pointsize(l); } const length &point::pointsize() const {return size_; } void point::print(terminal *t) { if(print_me_ < 2) return; t->open_layer(layer_); t->set_color(color_); t->translate(x_.termspecific_id(), y_.termspecific_id()); type_->draw(t); t->reset_transformation(); t->close_layer(layer_); } point &point::draw(container *parent, length x, length y) { if(parent == 0) err("point::draw ==> parent t== 0"); point *p = new point(); p->x(x).y(y); p->autodel(true); parent->add(p); return *p; } point &point::fdraw(length x,length y) { return point::draw(&frame::current(), x, y); } point &point::pdraw(length x,length y) { return point::draw(&pad::current(), x, y); } point &point::cdraw(length x,length y) { return point::draw(&canvas::current(), x, y); } void point::prepare_for_draw() { if(print_me_ < 1) return; x_.set_scale(x_unit()); y_.set_scale(y_unit()); x_.register_me(); y_.register_me(); size_.register_me(); type_->prepare_for_draw(size_); } }