Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: GR-PEACH_video GraphicsFramework LCD_shield_config R_BSP SDBlockDevice_GR_PEACH TLV320_RBSP USBHost_custom
Fork of RGA_HelloWorld by
rga_func.cpp
00001 /* 00002 Permission is hereby granted, free of charge, to any person obtaining a copy 00003 of this software and associated documentation files (the "Software"), to deal 00004 in the Software without restriction, including without limitation the rights 00005 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00006 copies of the Software, and to permit persons to whom the Software is 00007 furnished to do so, subject to the following conditions: 00008 00009 The above copyright notice and this permission notice shall be included in 00010 all copies or substantial portions of the Software. 00011 00012 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00013 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00014 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00015 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00016 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00017 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00018 THE SOFTWARE. 00019 */ 00020 00021 #include "mbed.h" 00022 #include "rga_func.h" 00023 #include "Images/BinaryImage_RZ_A1H.h" 00024 00025 00026 #define ZOOM_SRC_CENTER_X (IMAGE_WIDTH_ZOOM_FUNC / 2) 00027 #define ZOOM_SRC_CENTER_Y (IMAGE_HEIGHT_ZOOM_FUNC / 2) 00028 00029 #define CRYSTAL_DIAMETER (93) 00030 00031 #define VIDEO_WIDTH (480u) 00032 #define VIDEO_HEIGHT (272u) 00033 00034 Canvas2D_ContextClass canvas2d; 00035 00036 static animation_timing_function_t* accelerator; 00037 00038 void Set_RGAObject(frame_buffer_t* frmbuf_info) { 00039 errnum_t err; 00040 Canvas2D_ContextConfigClass config; 00041 00042 config.frame_buffer = frmbuf_info; 00043 canvas2d = R_RGA_New_Canvas2D_ContextClass(config); 00044 err = R_OSPL_GetErrNum(); 00045 if (err != 0) { 00046 printf("Line %d, error %d\n", __LINE__, err); 00047 while (1); 00048 } 00049 } 00050 00051 void RGA_Func_DrawTopScreen(frame_buffer_t* frmbuf_info) { 00052 /* Clear */ 00053 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00054 00055 /* Draw a image */ 00056 canvas2d.drawImage(TopScrn_jpg_File, 0, 0); 00057 00058 /* Complete drawing */ 00059 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00060 } 00061 00062 void RGA_Func_DrawRectangle(frame_buffer_t* frmbuf_info, draw_rectangle_pos_t * pos, int pos_num) { 00063 int cnt; 00064 00065 /* Clear */ 00066 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00067 00068 /* Draw description */ 00069 canvas2d.drawImage(decs_swipe_jpg_File, 230, 400); 00070 00071 /* Draw rectangle */ 00072 for (cnt = 0; cnt < pos_num; cnt++) { 00073 canvas2d.fillStyle = pos->style; 00074 canvas2d.fillRect(pos->x, pos->y, pos->w, pos->h); 00075 pos++; 00076 } 00077 00078 /* Draw return button */ 00079 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00080 00081 /* Complete drawing */ 00082 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00083 } 00084 00085 void RGA_Func_DrawImage(frame_buffer_t* frmbuf_info, int x, int y) { 00086 int draw_pos_x = x - (CRYSTAL_DIAMETER / 2); 00087 int draw_pos_y = y - (CRYSTAL_DIAMETER / 2); 00088 00089 /* Clear */ 00090 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00091 00092 /* Draw description */ 00093 canvas2d.drawImage(decs_swipe_jpg_File, 230, 400); 00094 00095 /* Draw the first image */ 00096 canvas2d.drawImage(Flower_jpg_File, 100, 100); 00097 00098 /* Draw the second image */ 00099 if ((frmbuf_info->pixel_format == PIXEL_FORMAT_ARGB8888) || (frmbuf_info->pixel_format == PIXEL_FORMAT_XRGB8888)) { 00100 canvas2d.drawImage(Crystal_png_ARGB8888, draw_pos_x, draw_pos_y); 00101 } else if (frmbuf_info->pixel_format != PIXEL_FORMAT_YUV422) { 00102 canvas2d.drawImage(Crystal_png_ARGB4444, draw_pos_x, draw_pos_y); 00103 } else { 00104 canvas2d.drawImage(Crystal_png_File, draw_pos_x, draw_pos_y); 00105 } 00106 00107 /* Draw return button */ 00108 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00109 00110 /* Complete drawing */ 00111 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00112 } 00113 00114 void RGA_Func_VideoPlayer(frame_buffer_t* frmbuf_info, uint8_t *jpeg_buffer1, uint8_t *jpeg_buffer2) { 00115 00116 /* Clear */ 00117 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00118 00119 /* Draw Backgound */ 00120 canvas2d.drawImage((graphics_image_t*)jpeg_buffer1, 0, 0); 00121 00122 /* Draw video */ 00123 canvas2d.drawImage((graphics_image_t*)jpeg_buffer2, 30, 120, VIDEO_WIDTH, VIDEO_HEIGHT); 00124 //canvas2d.drawImage((graphics_image_t*)jpeg_buffer2, 30, 120 ); 00125 00126 00127 /* Complete drawing */ 00128 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00129 } 00130 void RGA_Func_Dissolve(frame_buffer_t* frmbuf_info, float32_t global_alpha) { 00131 /* Dissolve = Fade Out + Fade In */ 00132 /* Clear */ 00133 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00134 00135 /* Draw description */ 00136 canvas2d.drawImage(decs_swipe_side_jpg_File, 140, 400); 00137 00138 /* fade Out */ 00139 canvas2d.globalAlpha = 1.0f - global_alpha; 00140 canvas2d.drawImage(Flower_jpg_File, 100, 100); 00141 00142 /* fade In */ 00143 canvas2d.globalAlpha = global_alpha; 00144 canvas2d.drawImage(Landscape_jpg_File, 100, 100); 00145 00146 canvas2d.globalAlpha = 1.0f; 00147 00148 /* Draw return button */ 00149 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00150 00151 /* Complete drawing */ 00152 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00153 } 00154 00155 void RGA_Func_Scroll(frame_buffer_t* frmbuf_info, int src_width_pos) { 00156 /* Clear */ 00157 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00158 00159 /* Draw description */ 00160 canvas2d.drawImage(decs_swipe_side_jpg_File, 140, 400); 00161 00162 /* Scroll from left to right */ 00163 canvas2d.drawImage(Landscape_wide_jpg_File, 00164 /* src */ src_width_pos, 25, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT, 00165 /* dst */ 100, 100, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT); 00166 00167 /* Draw return button */ 00168 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00169 00170 /* Complete drawing */ 00171 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00172 } 00173 00174 void RGA_Func_Zoom(frame_buffer_t* frmbuf_info, int src_height_pos) { 00175 /* Clear */ 00176 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00177 00178 /* Draw description */ 00179 canvas2d.drawImage(decs_swipe_side_jpg_File, 140, 400); 00180 00181 /* Zoom out */ 00182 canvas2d.drawImage(Landscape_wide_jpg_File, 00183 /* src X */ ZOOM_SRC_CENTER_X - (src_height_pos * IMG_DRAW_WIDTH / IMG_DRAW_HEIGHT), 00184 /* src Y */ ZOOM_SRC_CENTER_Y - src_height_pos, 00185 /* src W */ src_height_pos * 2 * IMG_DRAW_WIDTH / IMG_DRAW_HEIGHT, 00186 /* src H */ src_height_pos * 2, 00187 /* dst */ 100, 100, IMG_DRAW_WIDTH, IMG_DRAW_HEIGHT); 00188 00189 /* Draw return button */ 00190 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00191 00192 /* Complete drawing */ 00193 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00194 } 00195 00196 void RGA_Func_Rotation(frame_buffer_t* frmbuf_info, graphics_matrix_float_t image_angle) { 00197 /* Rotate the image to the right */ 00198 /* Clear */ 00199 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00200 00201 /* Draw description */ 00202 canvas2d.drawImage(decs_swipe_side_jpg_File, 140, 400); 00203 00204 /* Move to drawing position */ 00205 canvas2d.translate((100 + (IMG_DRAW_WIDTH / 2)), (100 + (IMG_DRAW_HEIGHT / 2))); 00206 00207 /* Rotate */ 00208 canvas2d.rotate(image_angle * (3.14159 / 180)); 00209 00210 /* Move to center to rotate */ 00211 canvas2d.translate((-IMG_DRAW_WIDTH / 2), (-IMG_DRAW_HEIGHT / 2)); 00212 canvas2d.drawImage(Flower_jpg_File, 0, 0); 00213 canvas2d.setTransform(1, 0, 0, 1, 0, 0); 00214 00215 /* Draw return button */ 00216 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00217 00218 /* Complete drawing */ 00219 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00220 } 00221 00222 void RGA_Func_Accelerate(frame_buffer_t* frmbuf_info, int animation_timing, float32_t relative_pos) { 00223 /* Do accelerated motion from right to left */ 00224 int position; 00225 00226 /* Clear */ 00227 canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height); 00228 00229 if (relative_pos == 0.0f) { 00230 switch (animation_timing) { 00231 case ANIMATION_TIMING_EASE: 00232 R_Get_AnimationTimingFunction("ease", &accelerator); 00233 break; 00234 case ANIMATION_TIMING_LINEAR: 00235 R_Get_AnimationTimingFunction("linear", &accelerator); 00236 break; 00237 case ANIMATION_TIMING_EASE_IN: 00238 R_Get_AnimationTimingFunction("ease-in", &accelerator); 00239 break; 00240 case ANIMATION_TIMING_EASE_OUT: 00241 R_Get_AnimationTimingFunction("ease-out", &accelerator); 00242 break; 00243 case ANIMATION_TIMING_EASE_IN_OUT: 00244 default: 00245 R_Get_AnimationTimingFunction("ease-in-out", &accelerator); 00246 break; 00247 } 00248 } 00249 00250 /* Draw rectangle */ 00251 canvas2d.fillStyle = "#0000FF"; /* blue */ 00252 switch (animation_timing) { 00253 case ANIMATION_TIMING_EASE: 00254 canvas2d.fillRect(17, 420, 136, 10); 00255 break; 00256 case ANIMATION_TIMING_LINEAR: 00257 canvas2d.fillRect(173, 420, 136, 10); 00258 break; 00259 case ANIMATION_TIMING_EASE_IN: 00260 canvas2d.fillRect(330, 420, 136, 10); 00261 break; 00262 case ANIMATION_TIMING_EASE_OUT: 00263 canvas2d.fillRect(487, 420, 136, 10); 00264 break; 00265 case ANIMATION_TIMING_EASE_IN_OUT: 00266 default: 00267 canvas2d.fillRect(644, 420, 136, 10); 00268 break; 00269 } 00270 00271 /* Draw button */ 00272 canvas2d.drawImage(animetion_timing_jpg_File, 0, 370); 00273 00274 position = R_ANIMATION_TIMING_FUNCTION_GetValue(accelerator, relative_pos, 550.0f, 10.0f); 00275 canvas2d.drawImage(Flower_jpg_File, position, 100); 00276 00277 /* Draw return button */ 00278 canvas2d.drawImage(RetBtn_jpg_File, 640, 10); 00279 00280 /* Complete drawing */ 00281 R_GRAPHICS_Finish(canvas2d.c_LanguageContext); 00282 }
Generated on Tue Jul 12 2022 21:21:51 by
1.7.2
