[cairo] How to take cairo_set_source_rgb effect for different color points?

Chris Wilson chris at chris-wilson.co.uk
Sun Oct 6 02:05:02 PDT 2013


On Sun, Oct 06, 2013 at 03:50:59PM +0800, Leslie Zhai wrote:
>    Hi cairo developers,
> 
>    I wanna draw some points indicating mouse`s X and Y, and used random
>    number from 0 to 255 for RGB color of the points, such as:
> 
>    for loop
>    {                                                                      
>                                  
>            double r = Map(i, 0, 100, 0, 255);    // Re-maps a number from one
>    range to another
>    [1]http://www.openframeworks.cc/documentation/math/ofMath.html#show_ofMap
>            double g =
>    0;                                                      
>            double b = 255 -
>    r;                                                
>                                                                
>            cairo_set_source_rgb(c, r / 255.0, g / 255.0, b /
>    255.0);          
>            cairo_move_to(c, x,
>    y);                                            
>           
>    cairo_close_path(c);                                               
>    }                                                                      
>    cairo_stroke(c);
> 
>    It is unable to put cairo_stroke into the for loop, it might be a heavy
>    operation when draw the path too often.
>    But cairo_set_source_rgb failed to take effect in the loop if cairo_stroke
>    was outside.
> 
>    The source code is available via
>    [2]https://github.com/xiangzhai/grt/tree/master/GRTExamples/ClassificationModulesExamples/CairoX11DTWExample
> 
>    So how to take cairo_set_source_rgb effect for drawing different color
>    points?
>    Please someone give me some advice, Thanks a lot :)

You can't store color per-path as stroke/fill operate upon the path union.
For the same reason calling stroke 100 times for a simple path is likely to
be a lot cheaper than calling it once with a 100-fold more complex path.

And you probably don't want to use stroke here unless you have a wide
pen and wish to use the pen to draw dots.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list