diff --git a/src/holt_widget.cc b/src/holt_widget.cc index 6e470bc..940a3c9 100644 --- a/src/holt_widget.cc +++ b/src/holt_widget.cc @@ -104,8 +104,10 @@ void HoltResource::draw(cairo_t *cr) _pos.real() - _radius, _pos.imag() - _radius, 2*_radius, 2*_radius); // fill - cairo_set_source_rgb (cr, 1, 0.5, 1); + cairo_set_source_rgb (cr, 1, 1, 1); cairo_fill_preserve (cr); + + // outline cairo_set_source_rgb (cr, 0, 0, 0); @@ -164,34 +166,61 @@ HoltSchedulable::~HoltSchedulable() void HoltSchedulable::draw(cairo_t *cr) { cairo_save(cr); // save context state + cairo_pattern_t* gradient; + gradient = cairo_pattern_create_radial( _pos.real(), _pos.imag(), 0.0, _pos.real(), _pos.imag(), _radius); + + +/* + _ready_process_gradient = cairo_pattern_create_linear(0, 0, 0, _yu_process_bar_height * _y_unit); + // yellow + cairo_pattern_add_color_stop_rgba(_ready_process_gradient, 0.00, 1.0, 1.0, 0.5, 0.7); + cairo_pattern_add_color_stop_rgba(_ready_process_gradient, 1.00, 1.0, 1.0, 0.0, 1.0); + + _running_process_gradient = cairo_pattern_create_linear(0, 0, 0, _yu_process_bar_height * _y_unit); + // green + cairo_pattern_add_color_stop_rgba(_running_process_gradient, 0.00, 0.5, 1.0, 0.5, 0.7); + cairo_pattern_add_color_stop_rgba(_running_process_gradient, 1.00, 0.0, 1.0, 0.0, 1.0); + + _blocked_process_gradient = cairo_pattern_create_linear(0, 0, 0, _yu_process_bar_height * _y_unit); + // blue + cairo_pattern_add_color_stop_rgba(_blocked_process_gradient, 0.00, 0.5, 0.5, 1.0, 0.7); + cairo_pattern_add_color_stop_rgba(_blocked_process_gradient, 1.00, 0.0, 0.0, 1.0, 1.0); +*/ // draw circle cairo_arc (cr, _pos.real(), _pos.imag(), _radius, 0, 2 * M_PI); // filling switch(_schedulable->get_state()) { case Schedulable::state_running: - //cairo_set_source_rgb (cr, 0.5, 1, 0.5); - cairo_set_source_rgb (cr, 0, 1, 0); + // cairo_set_source_rgb (cr, 0, 1, 0); + // green + cairo_pattern_add_color_stop_rgba(gradient, 0.00, 0.5, 1.0, 0.5, 0.7); + cairo_pattern_add_color_stop_rgba(gradient, 1.00, 0.0, 1.0, 0.0, 1.0); + cairo_set_source(cr, gradient); break; case Schedulable::state_ready: - // cairo_set_source_rgb (cr, 1, 1, 0.5); - cairo_set_source_rgb (cr, 1, 1, 0); + // cairo_set_source_rgb (cr, 1, 1, 0); + // yellow + cairo_pattern_add_color_stop_rgba(gradient, 0.00, 1.0, 1.0, 0.5, 0.7); + cairo_pattern_add_color_stop_rgba(gradient, 1.00, 1.0, 1.0, 0.0, 1.0); + cairo_set_source(cr, gradient); break; case Schedulable::state_blocked: - // cairo_set_source_rgb (cr, 1, 0.5, 0.5); - cairo_set_source_rgb (cr, 1, 0, 0); + // cairo_set_source_rgb (cr, 1, 0, 0); + // blue + cairo_pattern_add_color_stop_rgba(gradient, 0.00, 0.5, 0.5, 1.0, 0.7); + cairo_pattern_add_color_stop_rgba(gradient, 1.00, 0.0, 0.0, 1.0, 1.0); + cairo_set_source(cr, gradient); break; case Schedulable::state_future: - // cairo_set_source_rgb (cr, 0.5, 0.5, 1); - cairo_set_source_rgb (cr, 0.5, 0.5, 1); + //cairo_set_source_rgb (cr, 0.5, 0.5, 1); break; case Schedulable::state_terminated: cairo_set_source_rgb (cr, 0.5, 0.5, 0.5); break; } cairo_fill_preserve (cr); - // outline cairo_set_source_rgb (cr, 0, 0, 0); @@ -208,6 +237,7 @@ void HoltSchedulable::draw(cairo_t *cr) // stroke all cairo_stroke (cr); cairo_restore(cr); // restore context state + cairo_pattern_destroy(gradient); } Vec2 HoltSchedulable::get_intersection_to(Vec2 pt) @@ -246,10 +276,12 @@ void HoltRequest::draw(cairo_t *cr) switch(_state) { case Request::state_unallocable: - cairo_set_source_rgb(cr, 1, 0, 0); + // blue + cairo_set_source_rgb(cr, 0, 0, 1); arrow(cr, schedulable, resource); break; case Request::state_allocated: + // green cairo_set_source_rgb(cr, 0, 1, 0); arrow(cr, resource, schedulable); break; @@ -258,6 +290,7 @@ void HoltRequest::draw(cairo_t *cr) case Request::state_exhausted: break; case Request::state_allocable: + // yellow cairo_set_source_rgb(cr, 1, 1, 0); arrow(cr, schedulable, resource); break; @@ -656,8 +689,6 @@ HoltWidget::draw_widget(cairo_t* ctx) piter++; } - cairo_set_line_width (ctx, 0.5 * cairo_get_line_width (ctx)); - typedef HoltRequests::const_iterator holt_requ_iterator; holt_requ_iterator reqiter = _holt_requests.begin(); while(reqiter!=_holt_requests.end())