Add overlay x/y, split singular/plural overlay functions

This commit is contained in:
GriffinR
2021-12-09 12:32:19 -05:00
committed by huderlem
parent 206a1d12b3
commit a6395eefbb
8 changed files with 221 additions and 38 deletions

View File

@@ -67,10 +67,26 @@ public:
Q_INVOKABLE void setDimensions(int width, int height);
Q_INVOKABLE void setWidth(int width);
Q_INVOKABLE void setHeight(int height);
Q_INVOKABLE void clearOverlay(int layer = INT_MAX);
Q_INVOKABLE void hideOverlay(int layer = INT_MAX);
Q_INVOKABLE void showOverlay(int layer = INT_MAX);
Q_INVOKABLE void setOverlayVisibility(bool visible, int layer = INT_MAX);
Q_INVOKABLE void clearOverlay(int layer = 0);
Q_INVOKABLE void clearOverlays();
Q_INVOKABLE void hideOverlay(int layer = 0);
Q_INVOKABLE void hideOverlays();
Q_INVOKABLE void showOverlay(int layer = 0);
Q_INVOKABLE void showOverlays();
Q_INVOKABLE bool getOverlayVisibility(int layer = 0);
Q_INVOKABLE void setOverlayVisibility(bool visible, int layer = 0);
Q_INVOKABLE void setOverlaysVisibility(bool visible);
Q_INVOKABLE int getOverlayX(int layer = 0);
Q_INVOKABLE int getOverlayY(int layer = 0);
Q_INVOKABLE void setOverlayX(int x, int layer = 0);
Q_INVOKABLE void setOverlayY(int y, int layer = 0);
Q_INVOKABLE void setOverlaysX(int x);
Q_INVOKABLE void setOverlaysY(int y);
Q_INVOKABLE QJSValue getOverlayPosition(int layer = 0);
Q_INVOKABLE void setOverlayPosition(int x, int y, int layer = 0);
Q_INVOKABLE void setOverlaysPosition(int x, int y);
Q_INVOKABLE void moveOverlay(int deltaX, int deltaY, int layer = 0);
Q_INVOKABLE void moveOverlays(int deltaX, int deltaY);
Q_INVOKABLE void addText(QString text, int x, int y, QString color = "#000000", int fontSize = 12, int layer = 0);
Q_INVOKABLE void addRect(int x, int y, int width, int height, QString color = "#000000", int layer = 0);
Q_INVOKABLE void addFilledRect(int x, int y, int width, int height, QString color = "#000000", int layer = 0);

View File

@@ -25,6 +25,7 @@ public:
static QJSValue fromTile(Tile tile);
static Tile toTile(QJSValue obj);
static QJSValue dimensions(int width, int height);
static QJSValue position(int x, int y);
static QJSEngine *getEngine();
static QImage getImage(QString filepath);
static void init(MainWindow *mainWindow);

View File

@@ -15,6 +15,10 @@ public:
Overlay * getOverlay(int layer);
void clearOverlays();
void setOverlaysHidden(bool hidden);
void setOverlaysX(int x);
void setOverlaysY(int y);
void setOverlaysPosition(int x, int y);
void moveOverlays(int deltaX, int deltaY);
public:
// GraphicsView_Object object;

View File

@@ -10,7 +10,7 @@ class OverlayItem {
public:
OverlayItem() {}
virtual ~OverlayItem() {};
virtual void render(QPainter *) {};
virtual void render(QPainter *, int, int) {};
};
class OverlayText : public OverlayItem {
@@ -23,7 +23,7 @@ public:
this->fontSize = fontSize;
}
~OverlayText() {}
virtual void render(QPainter *painter);
virtual void render(QPainter *painter, int x, int y);
private:
QString text;
int x;
@@ -43,7 +43,7 @@ public:
this->filled = filled;
}
~OverlayRect() {}
virtual void render(QPainter *painter);
virtual void render(QPainter *painter, int x, int y);
private:
int x;
int y;
@@ -61,7 +61,7 @@ public:
this->image = image;
}
~OverlayImage() {}
virtual void render(QPainter *painter);
virtual void render(QPainter *painter, int x, int y);
private:
int x;
int y;
@@ -71,11 +71,22 @@ private:
class Overlay
{
public:
Overlay() {}
Overlay() {
this->x = 0;
this->y = 0;
this->hidden = false;
}
~Overlay() {
this->clearItems();
}
bool getHidden();
void setHidden(bool hidden);
int getX();
int getY();
void setX(int x);
void setY(int y);
void setPosition(int x, int y);
void move(int deltaX, int deltaY);
void renderItems(QPainter *painter);
QList<OverlayItem*> getItems();
void clearItems();
@@ -85,6 +96,8 @@ public:
bool addImage(int x, int y, QImage image);
private:
QList<OverlayItem*> items;
int x;
int y;
bool hidden;
};