axmol/extensions/fairygui/GImage.cpp

164 lines
3.5 KiB
C++

#include "GImage.h"
#include "PackageItem.h"
#include "display/FUISprite.h"
#include "utils/ByteBuffer.h"
#include "utils/ToolSet.h"
NS_FGUI_BEGIN
USING_NS_AX;
GImage::GImage() : _content(nullptr)
{
_touchDisabled = true;
}
GImage::~GImage()
{
}
void GImage::handleInit()
{
_content = FUISprite::create();
_content->retain();
_displayObject = _content;
}
FlipType GImage::getFlip() const
{
if (_content->isFlippedX() && _content->isFlippedY())
return FlipType::BOTH;
else if (_content->isFlippedX())
return FlipType::HORIZONTAL;
else if (_content->isFlippedY())
return FlipType::VERTICAL;
else
return FlipType::NONE;
}
void GImage::setFlip(FlipType value)
{
_content->setFlippedX(value == FlipType::HORIZONTAL || value == FlipType::BOTH);
_content->setFlippedY(value == FlipType::VERTICAL || value == FlipType::BOTH);
}
void GImage::handleGrayedChanged()
{
GObject::handleGrayedChanged();
((FUISprite*)_content)->setGrayed(_finalGrayed);
}
axis::Color3B GImage::getColor() const
{
return _content->getColor();
}
void GImage::setColor(const axis::Color3B& value)
{
_content->setColor(value);
}
FillMethod GImage::getFillMethod() const
{
return _content->getFillMethod();
}
void GImage::setFillMethod(FillMethod value)
{
_content->setFillMethod(value);
}
FillOrigin GImage::getFillOrigin() const
{
return _content->getFillOrigin();
}
void GImage::setFillOrigin(FillOrigin value)
{
_content->setFillOrigin(value);
}
bool GImage::isFillClockwise() const
{
return _content->isFillClockwise();
}
void GImage::setFillClockwise(bool value)
{
_content->setFillClockwise(value);
}
float GImage::getFillAmount() const
{
return _content->getFillAmount();
}
void GImage::setFillAmount(float value)
{
_content->setFillAmount(value);
}
axis::Value GImage::getProp(ObjectPropID propId)
{
switch (propId)
{
case ObjectPropID::Color:
return Value(ToolSet::colorToInt(getColor()));
default:
return GObject::getProp(propId);
}
}
void GImage::setProp(ObjectPropID propId, const axis::Value& value)
{
switch (propId)
{
case ObjectPropID::Color:
setColor(ToolSet::intToColor(value.asUnsignedInt()));
break;
default:
GObject::setProp(propId, value);
break;
}
}
void GImage::constructFromResource()
{
PackageItem* contentItem = _packageItem->getBranch();
sourceSize.width = contentItem->width;
sourceSize.height = contentItem->height;
initSize = sourceSize;
contentItem = contentItem->getHighResolution();
contentItem->load();
_content->setSpriteFrame(contentItem->spriteFrame);
if (contentItem->scale9Grid)
((FUISprite*)_content)->setScale9Grid(contentItem->scale9Grid);
else if (contentItem->scaleByTile)
((FUISprite*)_content)->setScaleByTile(true);
setSize(sourceSize.width, sourceSize.height);
}
void GImage::setup_beforeAdd(ByteBuffer* buffer, int beginPos)
{
GObject::setup_beforeAdd(buffer, beginPos);
buffer->seek(beginPos, 5);
if (buffer->readBool())
setColor((Color3B)buffer->readColor());
setFlip((FlipType)buffer->readByte());
int fillMethod = buffer->readByte();
if (fillMethod != 0)
{
_content->setFillMethod((FillMethod)fillMethod);
_content->setFillOrigin((FillOrigin)buffer->readByte());
_content->setFillClockwise(buffer->readBool());
_content->setFillAmount(buffer->readFloat());
}
}
NS_FGUI_END