X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=alg%2Fdrawable.hpp;h=97b01059259587015db5bda8c87ff69dc5d87d9a;hp=ca6610fe06c7fda2589a19fad0520a2029d9e76b;hb=f2858f72af9cbe3258229bda254f186f279c5c8c;hpb=67888dae3b16b9d69aa846e393f11e7ff3633f16 diff --git a/alg/drawable.hpp b/alg/drawable.hpp index ca6610f..97b0105 100644 --- a/alg/drawable.hpp +++ b/alg/drawable.hpp @@ -5,6 +5,12 @@ #include "color.hpp" +// Nooo!!!! I'm repeating myself. +// Should all the'se ref typedefs go somewhere else? +// *sigh* mutters about recursive #includes +class SeqSpan; +typedef boost::shared_ptr SeqSpanRef; + class Drawable; typedef boost::shared_ptr DrawableRef; @@ -13,14 +19,17 @@ typedef boost::shared_ptr DrawableRef; */ class Drawable { public: + typedef void (*draw_func_ptr)(SeqSpanRef, void *); + Drawable() : - draw_x(0), draw_y(0), draw_z(0), draw_height(0), draw_color(new Color) {} - Drawable(float x, float y, float z, float h, ColorRef c) : - draw_x(x), draw_y(y), draw_z(z), draw_height(h), draw_color(c) {} + draw_x(0), draw_y(0), draw_z(0), draw_height(0), draw_color(new Color), draw_func(0) {} + Drawable(float x, float y, float z, float h, ColorRef c, draw_func_ptr draw=0) : + draw_x(x), draw_y(y), draw_z(z), draw_height(h), draw_color(c), draw_func(draw) {} Drawable(const DrawableRef d) : draw_x(d->draw_x), draw_y(d->draw_y), draw_z(d->draw_z), draw_height(d->draw_height), - draw_color(new Color(d->draw_color)) + draw_color(new Color(d->draw_color)), + draw_func(d->draw_func) {} //! set our starting x (horizontal) coordinate @@ -45,6 +54,9 @@ public: void setColor(ColorRef c) { draw_color = c; } //! return our draw color ColorRef color() { return draw_color; } + + void setDrawFunction(draw_func_ptr d) { draw_func = d; } + draw_func_ptr drawFunction() const { return draw_func; } protected: float draw_x; @@ -52,5 +64,7 @@ protected: float draw_z; float draw_height; ColorRef draw_color; + draw_func_ptr draw_func; + }; #endif /*DRAWABLE_HPP_*/