Browse Source

More base changes

gh-pages
falkTX 11 years ago
parent
commit
3ec241f04c
6 changed files with 138 additions and 65 deletions
  1. +16
    -7
      dgl/Geometry.hpp
  2. +3
    -7
      dgl/Widget.hpp
  3. +82
    -26
      dgl/src/Geometry.cpp
  4. +14
    -4
      dgl/src/Widget.cpp
  5. +6
    -4
      examples/color.cpp
  6. +17
    -17
      examples/images.cpp

+ 16
- 7
dgl/Geometry.hpp View File

@@ -70,6 +70,8 @@ public:


void setWidth(const T& width) noexcept; void setWidth(const T& width) noexcept;
void setHeight(const T& height) noexcept; void setHeight(const T& height) noexcept;
void setSize(const T& width, const T& height) noexcept;
void setSize(const Size<T>& size) noexcept;


void growBy(const T& multiplier) noexcept; void growBy(const T& multiplier) noexcept;
void shrinkBy(const T& divider) noexcept; void shrinkBy(const T& divider) noexcept;
@@ -110,27 +112,34 @@ public:
const Point<T>& getPos() const noexcept; const Point<T>& getPos() const noexcept;
const Size<T>& getSize() const noexcept; const Size<T>& getSize() const noexcept;


bool contains(const T& x, const T& y) const noexcept;
bool contains(const Point<T>& pos) const noexcept;
bool containsX(const T& x) const noexcept;
bool containsY(const T& y) const noexcept;

void setX(const T& x) noexcept; void setX(const T& x) noexcept;
void setY(const T& y) noexcept; void setY(const T& y) noexcept;
void setPos(const T& x, const T& y) noexcept; void setPos(const T& x, const T& y) noexcept;
void setPos(const Point<T>& pos) noexcept; void setPos(const Point<T>& pos) noexcept;


void move(const T& x, const T& y) noexcept;
void move(const Point<T>& pos) noexcept;
void moveBy(const T& x, const T& y) noexcept;
void moveBy(const Point<T>& pos) noexcept;


void setWidth(const T& width) noexcept; void setWidth(const T& width) noexcept;
void setHeight(const T& height) noexcept; void setHeight(const T& height) noexcept;
void setSize(const T& width, const T& height) noexcept; void setSize(const T& width, const T& height) noexcept;
void setSize(const Size<T>& size) noexcept; void setSize(const Size<T>& size) noexcept;


void growBy(const T& multiplier) noexcept;
void shrinkBy(const T& divider) noexcept;

bool contains(const T& x, const T& y) const noexcept;
bool contains(const Point<T>& pos) const noexcept;
bool containsX(const T& x) const noexcept;
bool containsY(const T& y) const noexcept;

void draw(); void draw();


Rectangle<T>& operator=(const Rectangle<T>& rect) noexcept; Rectangle<T>& operator=(const Rectangle<T>& rect) noexcept;
Rectangle<T>& operator*=(const T& m) noexcept;
Rectangle<T>& operator/=(const T& d) noexcept;
bool operator==(const Rectangle<T>& size) const noexcept;
bool operator!=(const Rectangle<T>& size) const noexcept;


private: private:
Point<T> fPos; Point<T> fPos;


+ 3
- 7
dgl/Widget.hpp View File

@@ -53,8 +53,8 @@ public:
void setPos(int x, int y); void setPos(int x, int y);
void setPos(const Point<int>& pos); void setPos(const Point<int>& pos);


void move(int x, int y);
void move(const Point<int>& pos);
void moveBy(int x, int y);
void moveBy(const Point<int>& pos);


int getWidth() const noexcept; int getWidth() const noexcept;
int getHeight() const noexcept; int getHeight() const noexcept;
@@ -63,13 +63,9 @@ public:
// virtual needed by cairo // virtual needed by cairo
virtual void setWidth(int width); virtual void setWidth(int width);
virtual void setHeight(int height); virtual void setHeight(int height);
virtual void setSize(int width, int height);
virtual void setSize(const Size<int>& size); virtual void setSize(const Size<int>& size);


void setSize(int width, int height)
{
setSize(Size<int>(width, height));
}

const Rectangle<int>& getArea() const noexcept; const Rectangle<int>& getArea() const noexcept;


uint32_t getEventTimestamp(); uint32_t getEventTimestamp();


+ 82
- 26
dgl/src/Geometry.cpp View File

@@ -178,6 +178,20 @@ void Size<T>::setHeight(const T& height) noexcept
fHeight = height; fHeight = height;
} }


template<typename T>
void Size<T>::setSize(const T& width, const T& height) noexcept
{
fWidth = width;
fHeight = height;
}

template<typename T>
void Size<T>::setSize(const Size<T>& size) noexcept
{
fWidth = size.fWidth;
fHeight = size.fHeight;
}

template<typename T> template<typename T>
void Size<T>::growBy(const T& multiplier) noexcept void Size<T>::growBy(const T& multiplier) noexcept
{ {
@@ -325,30 +339,6 @@ const Size<T>& Rectangle<T>::getSize() const noexcept
return fSize; return fSize;
} }


template<typename T>
bool Rectangle<T>::contains(const T& x, const T& y) const noexcept
{
return (x >= fPos.fX && y >= fPos.fY && x <= fPos.fX+fSize.fWidth && y <= fPos.fY+fSize.fHeight);
}

template<typename T>
bool Rectangle<T>::contains(const Point<T>& pos) const noexcept
{
return contains(pos.fX, pos.fY);
}

template<typename T>
bool Rectangle<T>::containsX(const T& x) const noexcept
{
return (x >= fPos.fX && x <= fPos.fX + fSize.fWidth);
}

template<typename T>
bool Rectangle<T>::containsY(const T& y) const noexcept
{
return (y >= fPos.fY && y <= fPos.fY + fSize.fHeight);
}

template<typename T> template<typename T>
void Rectangle<T>::setX(const T& x) noexcept void Rectangle<T>::setX(const T& x) noexcept
{ {
@@ -375,14 +365,14 @@ void Rectangle<T>::setPos(const Point<T>& pos) noexcept
} }


template<typename T> template<typename T>
void Rectangle<T>::move(const T& x, const T& y) noexcept
void Rectangle<T>::moveBy(const T& x, const T& y) noexcept
{ {
fPos.fX += x; fPos.fX += x;
fPos.fY += y; fPos.fY += y;
} }


template<typename T> template<typename T>
void Rectangle<T>::move(const Point<T>& pos) noexcept
void Rectangle<T>::moveBy(const Point<T>& pos) noexcept
{ {
fPos += pos; fPos += pos;
} }
@@ -412,6 +402,44 @@ void Rectangle<T>::setSize(const Size<T>& size) noexcept
fSize = size; fSize = size;
} }


template<typename T>
void Rectangle<T>::growBy(const T& multiplier) noexcept
{
fSize.fWidth *= multiplier;
fSize.fHeight *= multiplier;
}

template<typename T>
void Rectangle<T>::shrinkBy(const T& divider) noexcept
{
fSize.fWidth /= divider;
fSize.fHeight /= divider;
}

template<typename T>
bool Rectangle<T>::contains(const T& x, const T& y) const noexcept
{
return (x >= fPos.fX && y >= fPos.fY && x <= fPos.fX+fSize.fWidth && y <= fPos.fY+fSize.fHeight);
}

template<typename T>
bool Rectangle<T>::contains(const Point<T>& pos) const noexcept
{
return contains(pos.fX, pos.fY);
}

template<typename T>
bool Rectangle<T>::containsX(const T& x) const noexcept
{
return (x >= fPos.fX && x <= fPos.fX + fSize.fWidth);
}

template<typename T>
bool Rectangle<T>::containsY(const T& y) const noexcept
{
return (y >= fPos.fY && y <= fPos.fY + fSize.fHeight);
}

template<typename T> template<typename T>
void Rectangle<T>::draw() void Rectangle<T>::draw()
{ {
@@ -444,6 +472,34 @@ Rectangle<T>& Rectangle<T>::operator=(const Rectangle<T>& rect) noexcept
return *this; return *this;
} }


template<typename T>
Rectangle<T>& Rectangle<T>::operator*=(const T& m) noexcept
{
fSize.fWidth *= m;
fSize.fHeight *= m;
return *this;
}

template<typename T>
Rectangle<T>& Rectangle<T>::operator/=(const T& d) noexcept
{
fSize.fWidth /= d;
fSize.fHeight /= d;
return *this;
}

template<typename T>
bool Rectangle<T>::operator==(const Rectangle<T>& rect) const noexcept
{
return (fPos == rect.fPos && fSize == rect.fSize);
}

template<typename T>
bool Rectangle<T>::operator!=(const Rectangle<T>& rect) const noexcept
{
return !operator==(rect);
}

// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// Possible template data types // Possible template data types




+ 14
- 4
dgl/src/Widget.cpp View File

@@ -108,15 +108,20 @@ void Widget::setPos(const Point<int>& pos)
fParent.repaint(); fParent.repaint();
} }


void Widget::move(int x, int y)
void Widget::moveBy(int x, int y)
{ {
fArea.move(x, y);
fArea.moveBy(x, y);
fParent.repaint(); fParent.repaint();
} }


void Widget::move(const Point<int>& pos)
void Widget::moveBy(const Point<int>& pos)
{ {
fArea.move(pos);
Point<int> movedPos = fArea.getPos() + pos;

if (fArea.getPos() == movedPos)
return;

fArea.moveBy(pos);
fParent.repaint(); fParent.repaint();
} }


@@ -153,6 +158,11 @@ void Widget::setHeight(int height)
fParent.repaint(); fParent.repaint();
} }


void Widget::setSize(int width, int height)
{
setSize(Size<int>(width, height));
}

void Widget::setSize(const Size<int>& size) void Widget::setSize(const Size<int>& size)
{ {
if (fArea.getSize() == size) if (fArea.getSize() == size)


+ 6
- 4
examples/color.cpp View File

@@ -110,15 +110,17 @@ private:


void onReshape(int width, int height) override void onReshape(int width, int height) override
{ {
// make widget same size as window
setSize(width, height);
Widget::onReshape(width, height);

// full bg // full bg
bgFull = Rectangle<int>(0, 0, width, height); bgFull = Rectangle<int>(0, 0, width, height);


// small bg, centered 2/3 size // small bg, centered 2/3 size
bgSmall = Rectangle<int>(width/6, height/6, width*2/3, height*2/3); bgSmall = Rectangle<int>(width/6, height/6, width*2/3, height*2/3);

// make widget same size as window
setSize(width, height);

// default reshape implementation
Widget::onReshape(width, height);
} }


char cur; char cur;


+ 17
- 17
examples/images.cpp View File

@@ -126,23 +126,6 @@ private:
repaint(); repaint();
} }


void setNewTopImg(const int imgId)
{
if (fImgTop1st == imgId)
return;

if (fImgTop2nd == imgId)
{
fImgTop2nd = fImgTop1st;
fImgTop1st = imgId;
return;
}

fImgTop3rd = fImgTop2nd;
fImgTop2nd = fImgTop1st;
fImgTop1st = imgId;
}

void onDisplay() override void onDisplay() override
{ {
switch (fImgTop3rd) switch (fImgTop3rd)
@@ -185,6 +168,23 @@ private:
}; };
} }


void setNewTopImg(const int imgId)
{
if (fImgTop1st == imgId)
return;

if (fImgTop2nd == imgId)
{
fImgTop2nd = fImgTop1st;
fImgTop1st = imgId;
return;
}

fImgTop3rd = fImgTop2nd;
fImgTop2nd = fImgTop1st;
fImgTop1st = imgId;
}

int fImgTop1st, fImgTop2nd, fImgTop3rd; int fImgTop1st, fImgTop2nd, fImgTop3rd;
int fImg1x, fImg2x, fImg3y; int fImg1x, fImg2x, fImg3y;
bool fImg1rev, fImg2rev, fImg3rev; bool fImg1rev, fImg2rev, fImg3rev;


Loading…
Cancel
Save