/**
  * Constructs a new Pattern that can be used to draw an SVG style radial gradient. Before using
  * the pattern, at least two color stops must be added.
  *
  * <p>This operation requires the operating system's advanced graphics subsystem which may not be
  * available on some platforms.
  *
  * @param device the device on which to allocate the pattern
  * @param cx the x coordinate of the center of the largest (i.e., outermost) circle for the radial
  *     gradient. The gradient will be drawn such that the 100% gradient stop is mapped to the
  *     perimeter of this largest (i.e., outermost) circle.
  * @param cy the y coordinate of the center of the largest (i.e., outermost) circle
  * @param fx the x coordinate of the focal point for the radial gradient. The gradient will be
  *     drawn such that the 0% gradient stop is mapped to (fx, fy).
  * @param fy the y coordinate of the focal point
  * @param r the radius of the largest (i.e., outermost) circle
  * @exception SWTException
  *     <ul>
  *       <li>ERROR_NO_GRAPHICS_LIBRARY - if advanced graphics are not available
  *     </ul>
  *
  * @see #addStop(Color, float)
  * @see #addStop(Color, float, int)
  * @since ???
  */
 public Pattern(Device device, float cx, float cy, float fx, float fy, float r) {
   super(device);
   this.device.checkCairo();
   handle = Cairo.cairo_pattern_create_radial(fx, fy, 0, cx, cy, r);
   Cairo.cairo_pattern_set_extend(handle, Cairo.CAIRO_EXTEND_PAD);
   init();
 }