/** * 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); }
/** @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); }
/** @see net.rim.device.api.openvg.VGField#initialize(VG) */ protected void initialize(final VG g) { final VG11 vg = (VG11) g; vg.vgSetfv(VG10.VG_CLEAR_COLOR, 4, MY_CLEAR_COLOR, 0); final XYRect rect = new XYRect(); // Create the bitmap from bundled resource "icons.png" final Bitmap bitmap = Bitmap.getBitmapResource("icons.png"); // Create the image for all the icons for (int i = 0; i < _imageHandles.length; i++) { // Update the XYRect in which the image will be displayed updateRect(rect, i); _imageHandles[i] = VGUtils.vgCreateImage(vg, bitmap, true, VG10.VG_IMAGE_QUALITY_BETTER, rect); } // Get the default font and its FontSpec final Font font = Font.getDefault(); final FontSpec fontSpec = font.getFontSpec(); // Create text image _textImage = VGUtils.vgCreateTextAsImage(vg, fontSpec, "Tap or click to swap screens", null, null); // Set up the animation. The animation will animate a scalar float value // (_mainRotation) from 360 to 0 over 3 seconds and will repeat // indefinitely. _animator = new Animator(0); final Animation animation = _animator.addAnimationFromTo( _mainRotation, AnimatedScalar.ANIMATION_PROPERTY_SCALAR, 360.0f, 0.0f, Animation.EASINGCURVE_LINEAR, 3000L); animation.setRepeatCount(Animation.REPEAT_COUNT_INDEFINITE); _animator.begin(0L); }