Bitmap - (2006/01/08 (日) 17:31:16) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Bitmap
**関数
Bitmap(unsigned short w = 0, unsigned short h = 0)
指定したサイズのBitmapを生成します。
Bitmap(const char* path)
pathにある画像ファイルを読み込み、Bitmapを生成します。
void dispose()
Bitmapを解放します。
bool isDisposed()
ビットマップがすでに解放されている場合に真を返します。
unsigned short getWidth()
ビットマップの幅を取得します。
unsigned short getHeight()
ビットマップの高さを取得します。
void get_rect(Rect* rec)
ビットマップの矩形([Rect])を取得します。
bool blt(unsigned short x, unsigned short y, Bitmap* src_bitmap, Rect* src_rect, float opacity = 255)
src_bitmap の矩形 src_rect ([Rect]) から、このビットマップの座標 (x, y) にブロック転送を行います。
opacity には不透明度を 0 ~ 255 の範囲で指定できます。
bool clear(unsigned int ccolor = transparency)
ビットマップ全体をccolorでクリアします。
unsigned int get_pixel(unsigned short x, unsigned short y)
点 (x, y) の色(PSP用カラーコード)を取得します。
bool set_pixel(unsigned short x, unsigned short y, unsigned int pix)
点 (x, y) の色を pix(PSP用カラーコード)に設定します。
**定義
>#ifndef RPG2K_Bitmap
>#define RPG2K_Bitmap
>
>#include "Color.h"
>#include "Rect.h"
>
>class Bitmap{
> unsigned short width;
> unsigned short height;
> bool disposed;
> unsigned int* bmpixels;
>public:
> unsigned int transparency = 0;
> // コンストラクタ
> Bitmap(unsigned short w = 0, unsigned short h = 0){
> bmpixels = (unsigned int*)calloc(w*h, sizeof(unsigned int));
> width = w;
> height = h;
> disposed = false;
> }
> Bitmap(const char* path){
> disposed = false;
> fileopen(path);
> }
> // デストラクタ
> ~Bitmap(){
> dispose();
> }
> unsigned short getWidth(){ return width;}
> unsigned short getHeight(){ return height;}
>
> //解放
> void dispose(){
> if(!disposed){
> free(bmpixels);
> disposed = true;
> width = 0;
> height = 0;
> }
> }
> bool isDisposed(){ return disposed;}
>
> // ファイルから開く 注:開発中のため独自形式のみ対応
> bool fileopen(const char* path){
> if(disposed) return false;
> unsigned short w;
> pspBasicStream file;
> // ファイルオープン
> if(!file.fileopen(path, false)) return false;
> // 画像幅取得 (独自形式の先頭2バイト)
> file.read(&w, 2);
> width = (unsigned short)w;
> // 画像高さ取得 (ファイルサイズ-2 /幅)
> height = (file.getLength()-2)/width;
> // ビットマップを開放
> free(bmpixels);
> // 画像読み込み
> bmpixels = (unsigned int*)calloc(width*height, sizeof(unsigned int));
> unsigned short x,y;
> for (y = 0; y < height; ++y){
> // ファイルから1ライン読み込み
> unsigned int* line = &bmpixels[y * width];
> file.read(line, width*4);
> for (x = 0; x < width; ++x)
> {
> line[x] = 0xFF000000 + RGBcode(line[x]);
> }
> }
> file.close();
> return true;
> }
> // ビットマップをクリア
> bool clear(unsigned int ccolor = transparency){
> if(disposed) return false;
> unsigned short x,y;
> for (y = 0; y < height; ++y){
> unsigned int* line = &bmpixels[y * width];
> for (x = 0; x < width; ++x)
> {
> line[x] = ccolor;
> }
> }
> return true;
> }
> // ピクセル取得/設定
> unsigned int get_pixel(unsigned short x, unsigned short y){
> if(x > width || y > height || disposed) return false;
> return bmpixels[y*width+x];
> }
> bool set_pixel(unsigned short x, unsigned short y, unsigned int pix){
> if(x > width || y > height || disposed) return false;
> bmpixels[y*width+x] = pix;
> return true;
> }
> void get_rect(Rect* rec){
> (*rec).width = width;
> (*rec).height = height;
> }
>
> // src_bitmap の矩形 src_rect (Rect) から、このビットマップの座標 (x, y) にブロック転送
> bool blt(unsigned short x, unsigned short y, Bitmap* src_bitmap, Rect* src_rect, float opacity = 255){
> if(x > width || y > height || disposed) return false;
> unsigned short a,b;
> for (a = 0; a < (*src_rect).height; ++a)
> {
> if(a >= height) break;
> unsigned int* line = &bmpixels[(y + a) * width];
> for (b = 0; b < (*src_rect).width; ++b)
> {
> if(b >= width) break;
> if(opacity == 0 || (*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a) == (*src_bitmap).transparency) break;
> if(opacity == 255){
> line[b+x] = (*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a);
> }else{
> Color C1,C2;
> C1.setBGRcode(line[b+x]);
> C2.setBGRcode((*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a));
> C2.opacity = opacity;
> C1.conposit(&C2);
> line[b+x] = C1.getPSPBGRcode();
> }
> }
> }
> return true;
> }
> // X方向に反転
> //Bitmap* reversalX(){
> //
> //}
>};
>#endif
*Bitmap
**関数
Bitmap(unsigned short w = 0, unsigned short h = 0)
指定したサイズのBitmapを生成します。
Bitmap(const char* path)
pathにある画像ファイルを読み込み、Bitmapを生成します。
void dispose()
Bitmapを解放します。
bool isDisposed()
ビットマップがすでに解放されている場合に真を返します。
unsigned short getWidth()
ビットマップの幅を取得します。
unsigned short getHeight()
ビットマップの高さを取得します。
void get_rect(Rect* rec)
ビットマップの矩形([Rect])を取得します。
bool blt(unsigned short x, unsigned short y, Bitmap* src_bitmap, Rect* src_rect, float opacity = 255)
src_bitmap の矩形 src_rect ([Rect]) から、このビットマップの座標 (x, y) にブロック転送を行います。
opacity には不透明度を 0 ~ 255 の範囲で指定できます。
bool clear(unsigned int ccolor = transparency)
ビットマップ全体をccolorでクリアします。
unsigned int get_pixel(unsigned short x, unsigned short y)
点 (x, y) の色(PSP用カラーコード)を取得します。
bool set_pixel(unsigned short x, unsigned short y, unsigned int pix)
点 (x, y) の色を pix(PSP用カラーコード)に設定します。
**定義
> //==============================================================================
> // ■ Bitmap
> //------------------------------------------------------------------------------
> // ビットマップのクラス。ビットマップは、いわゆる画像そのものを表わします。
> // 画面にビットマップを表示するためにはスプライト (Sprite) などを使う必要があります。(RGGSヘルプより)
> //==============================================================================
>
> #ifndef RPG2K_Bitmap
> #define RPG2K_Bitmap
>
> #include "Color.h"
> #include "Rect.h"
>
> class Bitmap{
> unsigned short width;
> unsigned short height;
> bool disposed;
> unsigned int* bmpixels;
> public:
> unsigned int transparency;
> // コンストラクタ
> Bitmap(unsigned short w = 0, unsigned short h = 0){
> bmpixels = (unsigned int*)calloc(w*h, sizeof(unsigned int));
> width = w;
> height = h;
> disposed = false;
> transparency = 0;
> }
> Bitmap(const char* path){
> disposed = false;
> fileopen(path);
> }
> // デストラクタ
> ~Bitmap(){
> dispose();
> }
> unsigned short getWidth(){ return width;}
> unsigned short getHeight(){ return height;}
>
> //解放
> void dispose(){
> if(!disposed){
> free(bmpixels);
> disposed = true;
> width = 0;
> height = 0;
> }
> }
> bool isDisposed(){ return disposed;}
>
> // ファイルから開く 注:開発中のため独自形式のみ対応
> bool fileopen(const char* path){
> if(disposed) return false;
> unsigned short w;
> pspBasicStream file;
> // ファイルオープン
> if(!file.fileopen(path, false)) return false;
> // 画像幅取得 (独自形式の先頭2バイト)
> file.read(&w, 2);
> width = (unsigned short)w;
> // 画像高さ取得 (ファイルサイズ-2 /幅)
> height = (file.getLength()-2)/width;
> // ビットマップを開放
> free(bmpixels);
> // 画像読み込み
> bmpixels = (unsigned int*)calloc(width*height, sizeof(unsigned int));
> unsigned short x,y;
> for (y = 0; y < height; ++y){
> // ファイルから1ライン読み込み
> unsigned int* line = &bmpixels[y * width];
> file.read(line, width*4);
> for (x = 0; x < width; ++x)
> {
> line[x] = 0xFF000000 + RGBcode(line[x]);
> }
> }
> file.close();
> return true;
> }
> // ビットマップをクリア
> bool clear(unsigned int ccolor = 0){
> if(disposed) return false;
> unsigned short x,y;
> for (y = 0; y < height; ++y){
> unsigned int* line = &bmpixels[y * width];
> for (x = 0; x < width; ++x)
> {
> if(ccolor==0) line[x] = transparency;
> else line[x] = ccolor;
> }
> }
> return true;
> }
> // ピクセル取得/設定
> unsigned int get_pixel(unsigned short x, unsigned short y){
> if(x > width || y > height || disposed) return false;
> return bmpixels[y*width+x];
> }
> bool set_pixel(unsigned short x, unsigned short y, unsigned int pix){
> if(x > width || y > height || disposed) return false;
> bmpixels[y*width+x] = pix;
> return true;
> }
> void get_rect(Rect* rec){
> (*rec).width = width;
> (*rec).height = height;
> }
>
> // src_bitmap の矩形 src_rect (Rect) から、このビットマップの座標 (x, y) にブロック転送
> bool blt(unsigned short x, unsigned short y, Bitmap* src_bitmap, Rect* src_rect, float opacity = 255){
> if(x > width || y > height || disposed) return false;
> unsigned short a,b;
> for (a = 0; a < (*src_rect).height; ++a)
> {
> if(a >= height) break;
> unsigned int* line = &bmpixels[(y + a) * width];
> for (b = 0; b < (*src_rect).width; ++b)
> {
> if(b >= width) break;
> if(opacity == 0 || (*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a) == (*src_bitmap).transparency) break;
> if(opacity == 255){
> line[b+x] = (*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a);
> }else{
> Color C1,C2;
> C1.setBGRcode(line[b+x]);
> C2.setBGRcode((*src_bitmap).get_pixel((*src_rect).x + b, (*src_rect).y + a));
> C2.opacity = opacity;
> C1.conposit(&C2);
> line[b+x] = C1.getPSPBGRcode();
> }
> }
> }
> return true;
> }
> // X方向に反転
> //Bitmap* reversalX(){
> //
> //}
> };
> #endif
表示オプション
横に並べて表示:
変化行の前後のみ表示: