SDXFrameWork 0.10 SDXFrameWork

- Main Page
- Related Pages
- Classes

- Class List
- Class Hierarchy
- Class Members

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
SDX::Camera Class Reference

2D用に座標変換を行うカメラを表すクラス. More...

`#include <Camera.h>`

## Public Member Functions
| Camera (const Point &座標, double 拡大率)
| カメラの作成. More...
void | SetMotion (std::unique_ptr< MOTION::IMotion > 移動パターン)
void | Update ()
| モーションに応じてカメラ位置の更新. More...
double | TransX (double X座標変換前) const
| カメラの位置と拡大率に応じてX座標を変換. More...
double | TransY (double Y座標変換前) const
| カメラの位置と拡大率に応じてY座標を変換. More...
Point | Trans (const Point &変換前座標) const
| 座標を画面上のどこに表示されるか変換. More...
SDL_Rect | TransRect (const SDL_Rect &変換前矩形) const
| 領域を画面上のどこに相当するか変換. More...

## Static Public Member Functions
static Camera * | Get ()
| 現在アクティブなカメラを取得. More...
static void | Set (Camera *アクティブにするCamera=nullptr)
| 現在アクティブなカメラを設定. More...

## Public Attributes
Point | position
| 中心の位置
Point | forcus
| Screen上の座標positonがWindow上のforcusに来るように補正をかける
double | zoom
| 拡大率、マイナスになると描画が狂う

## Detailed Description

2D用に座標変換を行うカメラを表すクラス.

Todo:
  グローバルな機能として設計中

//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
//[未実装]
bool SampleCamera()
{
using namespace SDX;
System::Initialise("sample", 640, 480);
Camera camera({320,240},1);
Image image("data/pipo-enemy035.png");
Font font(SystemFont::Mincho, 10);
ImagePack frameImage("data/pipo-WindowBase001.png", 9, 3, 3);
BmpFrame bmpFrame(&frameImage);
while (System::Update())
{
Camera::Set(&camera);
Drawing::Rect({ 10, 10, 100, 100 }, Color::White);
Drawing::Circle({ 200, 200, 100 }, Color::Red, 20);
Drawing::Line({ 0, 0 }, { 640, 480 }, Color::Lime);
font.Draw({ 200, 10 }, Color::Blue, "Hello World!");
image.Draw({ 300, 300 });
Camera::Set();//カメラによる位置補正無効化
bmpFrame.Draw({ 0, 0, 640, 40 });
font.Draw({ 10, 10 }, Color::White, { "マウスカーソルでカメラ位置変更、ホイールで拡大縮小\n位置 =", Input::mouse.x, ",",Input::mouse.y," 拡大率 = ",camera.zoom });
//マウスの位置が中心に来る
camera.position = { Input::mouse.x, Input::mouse.y };
//ホイールで拡大縮小
if (Input::mouse.Whell > 0)
{
camera.zoom *= 0.9;
}
if (Input::mouse.Whell < 0)
{
camera.zoom *= 1.1;
}
if (Input::key.Return.on){ break; }//Enterで終了
}
System::End();
return true;
}

## Constructor & Destructor Documentation

SDX::Camera::Camera | ( | const Point & | 座標,
|  | double | 拡大率
| ) |  |

カメラの作成.

初期座標と拡大率を指定してカメラを初期化

## Member Function Documentation

static Camera* SDX::Camera::Get | ( |  | ) |
| static

現在アクティブなカメラを取得.

static void SDX::Camera::Set | ( | Camera * | アクティブにするCamera = `nullptr` | ) |
| static

現在アクティブなカメラを設定.

void SDX::Camera::SetMotion | ( | std::unique_ptr< MOTION::IMotion > | 移動パターン | ) |

void SDX::Camera::Update | ( |  | ) |

モーションに応じてカメラ位置の更新.

double SDX::Camera::TransX | ( | double | X座標変換前 | ) | const

カメラの位置と拡大率に応じてX座標を変換.

double SDX::Camera::TransY | ( | double | Y座標変換前 | ) | const

カメラの位置と拡大率に応じてY座標を変換.

Point SDX::Camera::Trans | ( | const Point & | 変換前座標 | ) | const

座標を画面上のどこに表示されるか変換.

SDL_Rect SDX::Camera::TransRect | ( | const SDL_Rect & | 変換前矩形 | ) | const

領域を画面上のどこに相当するか変換.