/** @see net.rim.device.api.openvg.VGField#render(VG) */
  protected void render(final VG g) {
    final VG11 vg = (VG11) g;

    // Clear the display
    vg.vgClear(0, 0, getWidth(), getHeight());

    vg.vgSeti(VG10.VG_MATRIX_MODE, VG10.VG_MATRIX_IMAGE_USER_TO_SURFACE);

    // Shifting bits by >> 1 is equivalent to division by 2
    final float halfIconWidth = ICON_WIDTH >> 1;

    // Go through all the images and rotate them
    // around the center of the screen.
    for (int i = 0; i < _imageHandles.length; i++) {
      // Load clean Identity matrix
      vg.vgLoadIdentity();

      // Translate to the center of the display
      vg.vgTranslate(_xScreenCenter, _yScreenCenter);

      // Rotate the image
      vg.vgRotate(_mainRotation.getFloat() + ROTATE * i);

      // Translate the image half of the icon's width
      vg.vgTranslate(-halfIconWidth, RADIUS);

      // Draw the rotated, translated image
      vg.vgDrawImage(_imageHandles[i]);
    }

    // Draw the text image on this field
    drawText(vg);
  }
  /**
   * Draws text at the top of the VGField
   *
   * @param vg The object that will be used to render the text
   */
  public void drawText(final VG11 vg) {
    vg.vgSeti(VG10.VG_MATRIX_MODE, VG10.VG_MATRIX_IMAGE_USER_TO_SURFACE);

    // Load a clean identity matrix
    vg.vgLoadIdentity();

    // Translate to the next drawing location
    vg.vgTranslate(0.0f, _displayHeight - TEXT_OFFSET);

    // Draw the text on the display
    vg.vgDrawImage(_textImage);
  }