Seminar source
トレーニングの準備
プログラムをインポートする
インポートする際は、"update all libraries to the latest revision"を選択します。
Import programRGA_HelloWorld
For Seminar
プログラムの呼び先を変更する
以下のプログラムに該当する行を変更する。
main.cpp line.479
RGA_Func_Training(frmbuf_info, animation_timing, work_relative_pos);
描画処理の初期状態
以下のプログラムをrga_func.cppに追加する
rga_func.cpp line.263
void RGA_Func_Training(frame_buffer_t* frmbuf_info, int animation_timing, float32_t relative_pos) {
/* Do accelerated motion from right to left */
int position = 100;
r8g8b8a8_t fillColor;
uint8_t alpha;
/* Clear */
canvas2d.clearRect(0, 0, frmbuf_info->width, frmbuf_info->height);
/* programing area 1 ------------------------------------------------*/
/*---------------------------------------------------------------------*/
/* 画像の描画 (Section: 6.9.1.29) */
canvas2d.drawImage(Flower_jpg_File, 0, 0);
/* programing area 2 ------------------------------------------------*/
/*---------------------------------------------------------------------*/
/* Draw return button */
canvas2d.drawImage(RetBtn_jpg_File, 640, 10);
/* Complete drawing */
R_GRAPHICS_Finish(canvas2d.c_LanguageContext);
}
#ifdef NEVER_COMES_HERE
/* 画像の描画 (Section: 6.9.1.29) */
canvas2d.drawImage(g_sample1_jpg_File, 0, 0);
/* 希望する位置への移動 */
canvas2d.translate(0, 100);
/* animation */
/* rotate */
/* 画像の描画 (Section: 6.9.1.29) */
canvas2d.drawImage(Flower_jpg_File, 0, 0);
/* 回転角度 */
const float32_t angle = (float32_t)(relative_pos * (3.14159 / 180) * 200);
/* 原点中心で回転処理 */
canvas2d.rotate(relative_pos * (3.14159 / 180) * 200);
/* 原点が左上の画像に対して、画像の中心が原点となるように平行移動 */
canvas2d.translate((-IMG_DRAW_WIDTH / 2), (-IMG_DRAW_HEIGHT / 2));
/* 希望する位置への移動 */
canvas2d.translate((100 + (IMG_DRAW_WIDTH / 2)), (100 + (IMG_DRAW_HEIGHT / 2)));
/* マトリクスの初期化 */
canvas2d.setTransform(1, 0, 0, 1, 0, 0);
/* 挿入画像の描画 (Section: 6.9.1.29) */
canvas2d.drawImage(g_sample1_jpg_File, position, 0);
/* アニメーション時の位置取得 */
R_Get_AnimationTimingFunction("ease-in-out", &accelerator);
position = R_ANIMATION_TIMING_FUNCTION_GetValue(accelerator, relative_pos, 550.0f, 10.0f);
/* clipping */
/* クリッピングされた画像の描画 (Section: 6.9.1.29) */
e= R_GRAPHICS_DrawImageChild( graphics, g_sample00_jpg_file,
0, 0, WVGA_WIDTH - (int_fast32_t)position, WVGA_HEIGHT,
(int_fast32_t) position, 0, WVGA_WIDTH - (int_fast32_t)position, WVGA_HEIGHT); IF(e) { goto fin; }
/* clipping */
/* alpha blending */
/* クリア時の背景色の設定 */
/* 色の指定例: その他は http://www.colordic.org/
赤 緑 青
白: 255, 255, 255
黒: 0, 0, 0
赤: 255, 0, 0
*/
fillColor.u.Alpha = 255;
fillColor.u.Red = 255;
fillColor.u.Green = 255;
fillColor.u.Blue = 255;
R_GRAPHICS_SetBackgroundColor(canvas2d.c_LanguageContext, fillColor);
/* アルファ値の設定 */
alpha = (uint8_t) (relative_pos * (float32_t)ACCELERATE_MAX_NUM * 8) + 15;
R_GRAPHICS_SetGlobalAlpha(canvas2d.c_LanguageContext, alpha);
/* alpha blending */
#endif
画像を変更する
ImagePackager
- ImagePackagerで、画像データを簡単にプログラムで使用する形に変更することが可能。
- ImagaPackagerは、RGAのアプリケーションノートに付属、mbedサイトでも公開しています。
- Image Packagerのダウンロード
- 以下の2つの画像をダウンロードします。
ImagePackagerで画像データをプログラム化する
- ダウンロードしたZIPファイルを任意のフォルダに展開する。
- 展開した中のimagesフォルダ内のBinaryImageConfig.....xmlファイルをテキストエディタで開く
- 次のように書き換える(全選択の後、コピーしたデータを貼りつける)
<?xml version="1.0" encoding="UTF-8"?>
<ImagePackager>
<!-- This file is used by RGA_Tools.vbs RunImagePackager in BinaryImageMake.bat -->
<OutputBinary path="BinaryImage_RZ_A1H.c" language="C" symbol="RGA_Sample_BinaryImage"
source_template="${ImagePackagerLib}\SourceTemplate.xml#default"
super_class="${ImagePackagerLib}\SuperClass.xml#default"
alpha_raw_image_width="800">
<OutputHeader path="BinaryImage_RZ_A1H.h" include_define="BINARYIMAGE_RZ_A1H_H"/>
</OutputBinary>
<InputFiles>
<!--Image path="JPEG.jpg" type="graphics_image_t*" symbol="JPEG_jpg_ARGB8888" output_format="ARGB8888"/>
<Image path="JPEG.jpg" type="graphics_image_t*" symbol="JPEG_jpg_RGB565" output_format="RGB565"/>
<Image path="JPEG.jpg" type="graphics_image_t*" symbol="JPEG_jpg_ARGB1555" output_format="ARGB1555"/>
<Image path="JPEG.jpg" type="graphics_image_t*" symbol="JPEG_jpg_ARGB4444" output_format="ARGB4444"/>
<Image path="JPEG.jpg" type="graphics_image_t*" symbol="JPEG_jpg_YUV422" output_format="YUV422"/-->
<!-- 演習用データ ここから -->
<File symbol="g_sample0_jpg_File" path="sample00.jpg" type="graphics_image_t*"/>
<File symbol="g_sample1_jpg_File" path="sample01.jpg" type="graphics_image_t*"/>
<!-- 演習用追加データ ここから -->
<File path="flower.jpg" type="graphics_image_t*" symbol="Flower_jpg_File"/>
<File path="landscape.jpg" type="graphics_image_t*" symbol="Landscape_jpg_File"/>
<File path="landscape_wide.jpg" type="graphics_image_t*" symbol="Landscape_wide_jpg_File"/>
<File path="Top_Screen.jpg" type="graphics_image_t*" symbol="TopScrn_jpg_File"/>
<File path="ReturnButton.jpg" type="graphics_image_t*" symbol="RetBtn_jpg_File"/>
<File path="description_swipe.jpg" type="graphics_image_t*" symbol="decs_swipe_jpg_File"/>
<File path="description_swipe_side.jpg" type="graphics_image_t*" symbol="decs_swipe_side_jpg_File"/>
<File path="AnimetionTiming.jpg" type="graphics_image_t*" symbol="animetion_timing_jpg_File"/>
<Image path="Crystal.png" type="graphics_image_t*" symbol="Crystal_png_ARGB8888" output_format="ARGB8888"/>
<Image path="Crystal.png" type="graphics_image_t*" symbol="Crystal_png_ARGB1555" output_format="ARGB1555"/>
<Image path="CrystalDither.png" type="graphics_image_t*" symbol="Crystal_png_ARGB4444" output_format="ARGB4444"/>
<File path="Crystal.png" type="graphics_image_t*" symbol="Crystal_png_File"/>
<File path="CrystalDither.png" type="graphics_image_t*" symbol="CrystalDither_png_File"/>
</InputFiles>
</ImagePackager>
- 上の階層にあるBinaryImageMakeRGAH.batを実行し、画像データをソースファイルに変更する
- 作成できたソースは、Imagesフォルダ内にあります(BinaryImage_RZ_A1H.cとBinaryImage_RZ_A1H.h)
- これらをテキストエディタで開き、ブラウザ上の同名ファイルの中身を書き換える(全選択+ペースト)
以上で準備完了です。お疲れ様でした
Please log in to post comments.
