0
votes

i have some codes which i need to reimplement with Cairo::RefPtrCairo::Context...It is a bit confusing since i could not find good example which uses pattern while we have Cairo::RefPtrCairo::Context instead of cairo_t..

Cairo::RefPtr<Cairo::Surface> surface =
    Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, width, height);

Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(surface);


cairo_pattern_t *cp = cairo_pattern_create_radial(x_off, y_off, 0, x_off, y_off, cent_point_radius);
cairo_pattern_add_color_stop_rgba(cp, 0.0, 0.7, 0.7, 0.7, 0.8);
cairo_pattern_add_color_stop_rgba(cp, 1.0, 0.1, 0.1, 0.1, 0.8);
cairo_set_source(cr, cp);

How i can change "cp" to something which is recognizable for cr->set_resource().....cr used to be a cairo_t,but then i had to change it to Cairo::RefPtrCairo::Context

best regards

1

1 Answers

1
votes

Since you've already decided to do it the C++ way, why not go all the way in?

    // Create image surface.
    Cairo::RefPtr <Cairo::Surface> refSurface =
      Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32,
                                  nWidth,
                                  nHeight);

    // Create Cairo context for the image surface.
    Cairo::RefPtr <Cairo::Context> refContext =
      Cairo::Context::create(refSurface);

    // Create a radial gradient (pattern)
    Cairo::RefPtr <Cairo::RadialGradient> refPattern =
      Cairo::RadialGradient::create(x_off,
                                    y_off,
                                    0,
                                    x_off,
                                    y_off,
                                    cent_point_radius);

    // Add color stops to the pattern
    refPattern->add_color_stop_rgba(0.0,
                                    0.7,
                                    0.7,
                                    0.7,
                                    0.8);
    refPattern->add_color_stop_rgba(1.0,
                                    0.1,
                                    0.1,
                                    0.1,
                                    0.8);

    // Set the pattern as the source for the context.
    refContext->set_source(refPattern);

    // Add a closed path and fill...