Image Zoom In/out Sample. This program uses GraphicsFramework library and GP2Y0A21YK sensor. Please use distance sensor in the range of 10-30cm.

Dependencies:   GR-PEACH_video GraphicsFramework R_BSP mbed-rtos mbed

Fork of RGA_HelloWorld by Renesas

About GP2Y0A21YK

GP2Y0A21YK is a distance sensor and can be controlled by using the AnalogIn.
The range of this sensor is 10-80cm.

About wiring

SensorGR-PEACH
White wireA0
Orange wireGND
Black wire5.0V
Revision:
0:84e4649e7707
Child:
1:a07212e32dcb
Child:
2:c7faef0ef374
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rga_func.cpp	Wed Jan 20 02:35:42 2016 +0000
@@ -0,0 +1,187 @@
+/*
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+#include "mbed.h"
+#include "rga_func.h"
+#include "Images/BinaryImage_RZ_A1H.h"
+
+#define ZOOM_SRC_CENTER_X                   IMAGE_WIDTH_ZOOM_FUNC / 2
+#define ZOOM_SRC_CENTER_Y                   IMAGE_HEIGHT_ZOOM_FUNC / 2
+
+Canvas2D_ContextClass canvas2d;
+
+static animation_timing_function_t* accelerator;
+
+void Set_RGAObject(frame_buffer_t* frmbuf_info) {
+    errnum_t err;
+    Canvas2D_ContextConfigClass config;
+
+    config.frame_buffer = frmbuf_info;
+    canvas2d = R_RGA_New_Canvas2D_ContextClass(config);
+    err = R_OSPL_GetErrNum();
+    if (err != 0) {
+        printf("Line %d, error %d\n", __LINE__, err);
+        while (1);
+    }
+}
+
+void Get_AnimationTiming(char_t *timing_name) {
+    R_Get_AnimationTimingFunction(timing_name, &accelerator);
+}
+
+void RGA_Func_ClrScreen(frame_buffer_t* frmbuf_info) {
+    /* Clear the display in white */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+}
+
+void RGA_Func_DrawTopScreen(frame_buffer_t* frmbuf_info) {
+    /* Draw a image */
+    canvas2d.drawImage(TopScrn_jpg_File, 0, 0);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_DrawReturnButton(frame_buffer_t* frmbuf_info) {
+    /* Draw a image */
+    canvas2d.drawImage(RetBtn_jpg_File, 640, 10);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_DrawRectangle(frame_buffer_t* frmbuf_info) {
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* Draw red rectangle */
+    canvas2d.fillStyle = "#FF0000";
+    canvas2d.fillRect(0, 0, 160, 240);
+    canvas2d.fillRect(160, 240, 160, 240);
+    /* Draw green rectangle */
+    canvas2d.fillStyle = "#00FF00";
+    canvas2d.fillRect(160, 0, 160, 240);
+    canvas2d.fillRect(320, 240, 160, 240);
+    /* Draw blue rectangle */
+    canvas2d.fillStyle = "#0000FF";
+    canvas2d.fillRect(320, 0, 160, 240);
+    canvas2d.fillRect(480, 240, 160, 240);
+    /* Draw black rectangle */
+    canvas2d.fillStyle = "#000000";
+    canvas2d.fillRect(480, 0, 160, 240);
+    canvas2d.fillRect(640, 240, 160, 240);
+    /* Draw write rectangle */
+    canvas2d.fillStyle = "#FFFFFF";
+    canvas2d.fillRect(640, 0, 160, 240);
+    canvas2d.fillRect(0, 240, 160, 240);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_DrawImage(frame_buffer_t* frmbuf_info) {
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* Draw the first image */
+    canvas2d.drawImage(Flower_jpg_File, 100, 100);
+    /* Draw the second image */
+    if ((frmbuf_info->pixel_format == PIXEL_FORMAT_ARGB8888) || (frmbuf_info->pixel_format == PIXEL_FORMAT_XRGB8888)) {
+        canvas2d.drawImage(Crystal_png_ARGB8888, 280, 70);
+    } else if (frmbuf_info->pixel_format != PIXEL_FORMAT_YUV422) {
+        canvas2d.drawImage(Crystal_png_ARGB4444, 280, 70);
+    } else {
+        canvas2d.drawImage(Crystal_png_File, 280, 70);
+    }
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_Dissolve(frame_buffer_t* frmbuf_info, float32_t global_alpha) {
+    /* Dissolve = Fade Out + Fade In */
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* fade Out */
+    canvas2d.globalAlpha = 1.0f - global_alpha;
+    canvas2d.drawImage(Flower_jpg_File, 100, 100);
+    /* fade In */
+    canvas2d.globalAlpha = global_alpha;
+    canvas2d.drawImage(Landscape_jpg_File, 100, 100);
+
+    canvas2d.globalAlpha = 1.0f;
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_Scroll(frame_buffer_t* frmbuf_info, int src_width_pos) {
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* Scroll from left to right */
+    canvas2d.drawImage(Landscape_wide_jpg_File,
+                        /* src */       src_width_pos, 25, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT,
+                        /* dst */       100, 100, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_Zoom(frame_buffer_t* frmbuf_info, int src_height_pos) {
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* Zoom out */
+    canvas2d.drawImage(Landscape_wide_jpg_File,
+                        /* src X */     ZOOM_SRC_CENTER_X - (src_height_pos * IMG_DRAW_WIDTH / IMG_DRAW_HEIGHT),
+                        /* src Y */     ZOOM_SRC_CENTER_Y - src_height_pos,
+                        /* src W */     src_height_pos * 2 * IMG_DRAW_WIDTH / IMG_DRAW_HEIGHT,
+                        /* src H */     src_height_pos * 2,
+                        /* dst   */     100, 100, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_Rotation(frame_buffer_t* frmbuf_info, graphics_matrix_float_t image_angle) {
+    /* Rotate the image to the right */
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    /* Move to drawing position */
+    canvas2d.translate((100 + (IMG_DRAW_WIDTH / 2)), (100 + (IMG_DRAW_HEIGHT / 2)));
+    /* Rotate */
+    canvas2d.rotate(image_angle * (3.14159 / 180));
+    /* Move to center to rotate */
+    canvas2d.translate((-IMG_DRAW_WIDTH / 2), (-IMG_DRAW_HEIGHT / 2));
+    canvas2d.drawImage(Flower_jpg_File, 0, 0);
+    canvas2d.setTransform(1, 0, 0, 1, 0, 0);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}
+
+void RGA_Func_Accelerate(frame_buffer_t* frmbuf_info, float32_t relative_pos) {
+    /* Do accelerated motion from right to left */
+    int position;
+
+    /* Clear */
+    canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
+    position = R_ANIMATION_TIMING_FUNCTION_GetValue(accelerator, relative_pos, 550.0f, 10.0f);
+    canvas2d.drawImage(Flower_jpg_File, position, 100);
+
+    /* Complete drawing */
+    R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
+}