initial commit
This commit is contained in:
65
NewDialogs/Frame.cpp
Normal file
65
NewDialogs/Frame.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
#include "Frame.h"
|
||||
|
||||
Frame::Frame(SDL_Rect pos) : Item(pos) {
|
||||
setSurface(SDL_CreateSurface(getPos()->w, getPos()->h, SDL_GetPixelFormatForMasks(32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000)));
|
||||
memset((int *) getSurface()->pixels, 0xFFFFFFFF, pos.w * pos.h * 4);
|
||||
}
|
||||
|
||||
Frame::~Frame() {
|
||||
SDL_DestroySurface(getSurface());
|
||||
for (unsigned int z = 0; z < items.size(); z++) {
|
||||
delete items[z];
|
||||
}
|
||||
}
|
||||
|
||||
SDL_Surface *Frame::getSurface() {
|
||||
draw();
|
||||
return surface;
|
||||
}
|
||||
|
||||
void Frame::draw() {
|
||||
for (unsigned int z = 0; z < items.size(); z++) {
|
||||
SDL_Rect src = *items[z]->getPos();
|
||||
SDL_Rect dst = {0,0,0,0};
|
||||
if (src.x < 0) {
|
||||
src.x *= -1;
|
||||
} else {
|
||||
dst.x = src.x;
|
||||
src.x = 0;
|
||||
}
|
||||
if (src.y < 0) {
|
||||
src.y *= -1;
|
||||
} else {
|
||||
dst.y = src.y;
|
||||
src.y = 0;
|
||||
}
|
||||
SDL_BlitSurface(items[z]->getSurface(), &src, surface, &dst);
|
||||
}
|
||||
}
|
||||
|
||||
void Frame::addItem(Item *item) {
|
||||
items.push_back(item);
|
||||
}
|
||||
|
||||
Item *Frame::getItem(int i) {
|
||||
return items[i];
|
||||
}
|
||||
|
||||
bool Frame::onMousePress(int x, int y) {
|
||||
for (unsigned int z = 0; z < items.size(); z++) {
|
||||
items[z]->onMousePress(x - getPos()->x, y - getPos()->y);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void Frame::onMouseRelease(int x, int y) {
|
||||
for (unsigned int z = 0; z < items.size(); z++) {
|
||||
items[z]->onMouseRelease(x - getPos()->x, y - getPos()->y);
|
||||
}
|
||||
}
|
||||
|
||||
void Frame::onMouseMove(int x, int y) {
|
||||
for (unsigned int z = 0; z < items.size(); z++) {
|
||||
items[z]->onMouseMove(x - getPos()->x, y - getPos()->y);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user