Remove all public fields of Cel adding accessors.

This commit is contained in:
David Capello 2011-03-28 00:24:27 -03:00
parent 9077ab8357
commit a17c767e65
34 changed files with 287 additions and 353 deletions

View File

@ -93,21 +93,21 @@ void CelPropertiesCommand::onExecute(Context* context)
if (cel != NULL) {
// Position
label_pos->setTextf("%d, %d", cel->x, cel->y);
label_pos->setTextf("%d, %d", cel->getX(), cel->getY());
// Dimension (and memory size)
memsize =
image_line_size(sprite->getStock()->getImage(cel->image),
sprite->getStock()->getImage(cel->image)->w)*
sprite->getStock()->getImage(cel->image)->h;
image_line_size(sprite->getStock()->getImage(cel->getImage()),
sprite->getStock()->getImage(cel->getImage())->w)*
sprite->getStock()->getImage(cel->getImage())->h;
label_size->setTextf("%dx%d (%s)",
sprite->getStock()->getImage(cel->image)->w,
sprite->getStock()->getImage(cel->image)->h,
sprite->getStock()->getImage(cel->getImage())->w,
sprite->getStock()->getImage(cel->getImage())->h,
get_pretty_memory_size(memsize).c_str());
// Opacity
slider_opacity->setValue(cel->opacity);
slider_opacity->setValue(cel->getOpacity());
if (layer->is_background()) {
slider_opacity->setEnabled(false);
jwidget_add_tooltip_text(slider_opacity, "The `Background' layer is opaque,\n"
@ -133,9 +133,9 @@ void CelPropertiesCommand::onExecute(Context* context)
int new_opacity = slider_opacity->getValue();
/* the opacity was changed? */
// The opacity was changed?
if (cel_writer != NULL &&
cel_writer->opacity != new_opacity) {
cel_writer->getOpacity() != new_opacity) {
if (undo->isEnabled()) {
undo->setLabel("Cel Opacity Change");
undo->setModification(undo::ModifyDocument);
@ -143,8 +143,8 @@ void CelPropertiesCommand::onExecute(Context* context)
undo->pushUndoer(new undoers::SetCelOpacity(undo->getObjects(), cel_writer));
}
/* change cel opacity */
cel_set_opacity(cel_writer, new_opacity);
// Change cel opacity.
cel_writer->setOpacity(new_opacity);
update_screen_for_document(document);
}

View File

@ -134,12 +134,12 @@ void FlipCommand::onExecute(Context* context)
// for each cel...
for (CelIterator it = cels.begin(); it != cels.end(); ++it) {
Cel* cel = *it;
Image* image = sprite->getStock()->getImage(cel->image);
Image* image = sprite->getStock()->getImage(cel->getImage());
undoTransaction.setCelPosition
(cel,
m_flip_horizontal ? sprite->getWidth() - image->w - cel->x: cel->x,
m_flip_vertical ? sprite->getHeight() - image->h - cel->y: cel->y);
m_flip_horizontal ? sprite->getWidth() - image->w - cel->getX(): cel->getX(),
m_flip_vertical ? sprite->getHeight() - image->h - cel->getY(): cel->getY());
undoTransaction.flipImage(image, 0, 0, image->w-1, image->h-1,
m_flip_horizontal, m_flip_vertical);

View File

@ -96,12 +96,12 @@ void MergeDownLayerCommand::onExecute(Context* context)
/* get images */
if (src_cel != NULL)
src_image = sprite->getStock()->getImage(src_cel->image);
src_image = sprite->getStock()->getImage(src_cel->getImage());
else
src_image = NULL;
if (dst_cel != NULL)
dst_image = sprite->getStock()->getImage(dst_cel->image);
dst_image = sprite->getStock()->getImage(dst_cel->getImage());
else
dst_image = NULL;
@ -120,9 +120,9 @@ void MergeDownLayerCommand::onExecute(Context* context)
undo->undo_add_image(sprite->getStock(), index);
/* creating a copy of the cell */
dst_cel = cel_new(frpos, index);
cel_set_position(dst_cel, src_cel->x, src_cel->y);
cel_set_opacity(dst_cel, src_cel->opacity);
dst_cel = new Cel(frpos, index);
dst_cel->setPosition(src_cel->getX(), src_cel->getY());
dst_cel->setOpacity(src_cel->getOpacity());
if (undo->isEnabled())
undo->undo_add_cel(dst_layer, dst_cel);
@ -144,33 +144,34 @@ void MergeDownLayerCommand::onExecute(Context* context)
}
/* merge down in a transparent layer */
else {
x1 = MIN(src_cel->x, dst_cel->x);
y1 = MIN(src_cel->y, dst_cel->y);
x2 = MAX(src_cel->x+src_image->w-1, dst_cel->x+dst_image->w-1);
y2 = MAX(src_cel->y+src_image->h-1, dst_cel->y+dst_image->h-1);
x1 = MIN(src_cel->getX(), dst_cel->getX());
y1 = MIN(src_cel->getY(), dst_cel->getY());
x2 = MAX(src_cel->getX()+src_image->w-1, dst_cel->getX()+dst_image->w-1);
y2 = MAX(src_cel->getY()+src_image->h-1, dst_cel->getY()+dst_image->h-1);
bgcolor = 0;
}
new_image = image_crop(dst_image,
x1-dst_cel->x,
y1-dst_cel->y,
x1-dst_cel->getX(),
y1-dst_cel->getY(),
x2-x1+1, y2-y1+1, bgcolor);
/* merge src_image in new_image */
image_merge(new_image, src_image,
src_cel->x-x1,
src_cel->y-y1,
src_cel->opacity,
src_cel->getX()-x1,
src_cel->getY()-y1,
src_cel->getOpacity(),
static_cast<LayerImage*>(src_layer)->getBlendMode());
if (undo->isEnabled())
undo->pushUndoer(new undoers::SetCelPosition(undo->getObjects(), dst_cel));
cel_set_position(dst_cel, x1, y1);
dst_cel->setPosition(x1, y1);
if (undo->isEnabled())
undo->undo_replace_image(sprite->getStock(), dst_cel->image);
sprite->getStock()->replaceImage(dst_cel->image, new_image);
undo->undo_replace_image(sprite->getStock(), dst_cel->getImage());
sprite->getStock()->replaceImage(dst_cel->getImage(), new_image);
image_free(dst_image);
}

View File

@ -84,20 +84,20 @@ protected:
// for each cel...
for (CelIterator it = cels.begin(); it != cels.end(); ++it) {
Cel* cel = *it;
Image* image = m_sprite->getStock()->getImage(cel->image);
Image* image = m_sprite->getStock()->getImage(cel->getImage());
// change it location
switch (m_angle) {
case 180:
undoTransaction.setCelPosition(cel,
m_sprite->getWidth() - cel->x - image->w,
m_sprite->getHeight() - cel->y - image->h);
m_sprite->getWidth() - cel->getX() - image->w,
m_sprite->getHeight() - cel->getY() - image->h);
break;
case 90:
undoTransaction.setCelPosition(cel, m_sprite->getHeight() - cel->y - image->h, cel->x);
undoTransaction.setCelPosition(cel, m_sprite->getHeight() - cel->getY() - image->h, cel->getX());
break;
case -90:
undoTransaction.setCelPosition(cel, cel->y, m_sprite->getWidth() - cel->x - image->w);
undoTransaction.setCelPosition(cel, cel->getY(), m_sprite->getWidth() - cel->getX() - image->w);
break;
}
}

View File

@ -80,10 +80,10 @@ protected:
Cel* cel = *it;
// Change its location
undoTransaction.setCelPosition(cel, scale_x(cel->x), scale_y(cel->y));
undoTransaction.setCelPosition(cel, scale_x(cel->getX()), scale_y(cel->getY()));
// Get cel's image
Image* image = m_sprite->getStock()->getImage(cel->image);
Image* image = m_sprite->getStock()->getImage(cel->getImage());
if (!image)
continue;
@ -95,10 +95,10 @@ protected:
image_fixup_transparent_colors(image);
image_resize(image, new_image,
m_resize_method,
m_sprite->getPalette(cel->frame),
m_sprite->getRgbMap(cel->frame));
m_sprite->getPalette(cel->getFrame()),
m_sprite->getRgbMap(cel->getFrame()));
undoTransaction.replaceStockImage(cel->image, new_image);
undoTransaction.replaceStockImage(cel->getImage(), new_image);
jobProgress((float)progress / cels.size());

View File

@ -246,7 +246,7 @@ void FilterManagerImpl::applyToTarget()
for (ImagesCollector::ItemsIterator it = images.begin();
it != images.end() && !cancelled;
++it) {
applyToImage(it->layer(), it->image(), it->cel()->x, it->cel()->y);
applyToImage(it->layer(), it->image(), it->cel()->getX(), it->cel()->getY());
// Is there a delegate to know if the process was cancelled by the user?
if (m_progressDelegate)

View File

@ -74,7 +74,7 @@ void ContextFlags::update(Context* context)
if (cel) {
m_flags |= HasActiveCel;
if (sprite->getStock()->getImage(cel->image))
if (sprite->getStock()->getImage(cel->getImage()))
m_flags |= HasActiveImage;
}
}

View File

@ -269,13 +269,13 @@ bool AnimationEditor::onProcessMessage(JMessage msg)
if (layerPtr->is_image()) {
it = static_cast<LayerImage*>(layerPtr)->getCelBegin();
end = static_cast<LayerImage*>(layerPtr)->getCelEnd();
for (; it != end && (*it)->frame < first_frame; ++it)
for (; it != end && (*it)->getFrame() < first_frame; ++it)
;
}
// Draw every visible cel for each layer.
for (frame=first_frame; frame<=last_frame; ++frame) {
Cel* cel = (layerPtr->is_image() && it != end && (*it)->frame == frame ? *it: NULL);
Cel* cel = (layerPtr->is_image() && it != end && (*it)->getFrame() == frame ? *it: NULL);
drawCel(clip, layer, frame, cel);
@ -1209,7 +1209,7 @@ void AnimationEditor::drawCel(JRect clip, int layer_index, int frame, Cel* cel)
// Empty cel?.
if (cel == NULL ||
// TODO why a cel can't have an associated image?
m_sprite->getStock()->getImage(cel->image) == NULL) {
m_sprite->getStock()->getImage(cel->getImage()) == NULL) {
jdraw_rectfill(thumbnail_rect, bg);
draw_emptyset_symbol(ji_screen, thumbnail_rect, ji_color_disabled());

View File

@ -101,8 +101,8 @@ Document* Document::createBasicDocument(int imgtype, int width, int height, int
// Create the cel.
{
UniquePtr<Cel> cel(cel_new(0, indexInStock));
cel_set_position(cel, 0, 0);
UniquePtr<Cel> cel(new Cel(0, indexInStock));
cel->setPosition(0, 0);
// Add the cel in the layer.
layer->addCel(cel);
@ -234,9 +234,8 @@ void Document::prepareExtraCel(int x, int y, int w, int h, int opacity)
if (!m_extraCel)
m_extraCel = new Cel(0, 0); // Ignored fields for this cell (frame, and image index)
m_extraCel->x = x;
m_extraCel->y = y;
m_extraCel->opacity = opacity;
m_extraCel->setPosition(x, y);
m_extraCel->setOpacity(opacity);
if (!m_extraImage ||
m_extraImage->imgtype != getSprite()->getImgType() ||
@ -297,20 +296,20 @@ void Document::copyLayerContent(const LayerImage* sourceLayer, LayerImage* destL
for (; it != end; ++it) {
const Cel* sourceCel = *it;
Cel* newCel = cel_new_copy(sourceCel);
Cel* newCel = new Cel(*sourceCel);
ASSERT((sourceCel->image >= 0) &&
(sourceCel->image < sourceLayer->getSprite()->getStock()->size()));
ASSERT((sourceCel->getImage() >= 0) &&
(sourceCel->getImage() < sourceLayer->getSprite()->getStock()->size()));
const Image* sourceImage = sourceLayer->getSprite()->getStock()->getImage(sourceCel->image);
const Image* sourceImage = sourceLayer->getSprite()->getStock()->getImage(sourceCel->getImage());
ASSERT(sourceImage != NULL);
Image* newImage = image_new_copy(sourceImage);
newCel->image = destLayer->getSprite()->getStock()->addImage(newImage);
newCel->setImage(destLayer->getSprite()->getStock()->addImage(newImage));
if (m_undoHistory->isEnabled())
m_undoHistory->undo_add_image(destLayer->getSprite()->getStock(), newCel->image);
m_undoHistory->undo_add_image(destLayer->getSprite()->getStock(), newCel->getImage());
destLayer->addCel(newCel);
}

View File

@ -1022,10 +1022,10 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
return NULL;
}
/* create the new frame */
cel = cel_new(frame, 0);
cel_set_position(cel, x, y);
cel_set_opacity(cel, opacity);
// Create the new frame.
cel = new Cel(frame, 0);
cel->setPosition(x, y);
cel->setOpacity(opacity);
switch (cel_type) {
@ -1037,7 +1037,7 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
if (w > 0 && h > 0) {
Image* image = image_new(imgtype, w, h);
if (!image) {
cel_free(cel);
delete cel;
// Not enough memory for frame's image
return NULL;
}
@ -1058,7 +1058,7 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
break;
}
cel->image = sprite->getStock()->addImage(image);
cel->setImage(sprite->getStock()->addImage(image));
}
break;
}
@ -1070,11 +1070,11 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
if (link) {
// Create a copy of the linked cel (avoid using links cel)
Image* image = image_new_copy(sprite->getStock()->getImage(link->image));
cel->image = sprite->getStock()->addImage(image);
Image* image = image_new_copy(sprite->getStock()->getImage(link->getImage()));
cel->setImage(sprite->getStock()->addImage(image));
}
else {
cel_free(cel);
delete cel;
// Linked cel doesn't found
return NULL;
}
@ -1089,7 +1089,7 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
if (w > 0 && h > 0) {
Image* image = image_new(imgtype, w, h);
if (!image) {
cel_free(cel);
delete cel;
// Not enough memory for frame's image
return NULL;
}
@ -1110,7 +1110,7 @@ static Cel *ase_file_read_cel_chunk(FILE *f, Sprite *sprite, int frame, int imgt
break;
}
cel->image = sprite->getStock()->addImage(image);
cel->setImage(sprite->getStock()->addImage(image));
}
break;
}
@ -1129,16 +1129,16 @@ static void ase_file_write_cel_chunk(FILE *f, Cel *cel, LayerImage *layer, Sprit
ase_file_write_start_chunk(f, ASE_FILE_CHUNK_CEL);
fputw(layer_index, f);
fputw(cel->x, f);
fputw(cel->y, f);
fputc(cel->opacity, f);
fputw(cel->getX(), f);
fputw(cel->getY(), f);
fputc(cel->getOpacity(), f);
fputw(cel_type, f);
ase_file_write_padding(f, 7);
switch (cel_type) {
case ASE_FILE_RAW_CEL: {
Image* image = sprite->getStock()->getImage(cel->image);
Image* image = sprite->getStock()->getImage(cel->getImage());
if (image) {
// Width and height
@ -1176,7 +1176,7 @@ static void ase_file_write_cel_chunk(FILE *f, Cel *cel, LayerImage *layer, Sprit
break;
case ASE_FILE_COMPRESSED_CEL: {
Image* image = sprite->getStock()->getImage(cel->image);
Image* image = sprite->getStock()->getImage(cel->getImage());
if (image) {
// Width and height

View File

@ -418,7 +418,7 @@ void fop_operate(FileOp *fop)
->getSprite() \
->getStock()->addImage(fop->seq.image); \
\
fop->seq.last_cel->image = image_index; \
fop->seq.last_cel->setImage(image_index); \
fop->seq.layer->addCel(fop->seq.last_cel); \
\
if (fop->document->getSprite()->getPalette(frame) \
@ -458,7 +458,7 @@ void fop_operate(FileOp *fop)
// Error reading the first frame
if (!loadres || !fop->document || !fop->seq.last_cel) {
if (fop->seq.image) image_free(fop->seq.image);
if (fop->seq.last_cel) cel_free(fop->seq.last_cel);
if (fop->seq.last_cel) delete fop->seq.last_cel;
if (fop->document) {
delete fop->document;
fop->document = NULL;
@ -476,7 +476,7 @@ void fop_operate(FileOp *fop)
/* all done (or maybe not enough memory) */
if (!loadres || !fop->seq.last_cel) {
if (fop->seq.image) image_free(fop->seq.image);
if (fop->seq.last_cel) cel_free(fop->seq.last_cel);
if (fop->seq.last_cel) delete fop->seq.last_cel;
break;
}
@ -707,7 +707,7 @@ Image* fop_sequence_image(FileOp* fop, int imgtype, int w, int h)
Image* image = image_new(imgtype, w, h);
fop->seq.image = image;
fop->seq.last_cel = cel_new(fop->seq.frame++, 0);
fop->seq.last_cel = new Cel(fop->seq.frame++, 0);
return image;
}

View File

@ -155,11 +155,7 @@ bool FliFormat::onLoad(FileOp* fop)
break;
}
cel = cel_new(frpos_out, index);
if (!cel) {
fop_error(fop, "Not enough memory\n");
break;
}
cel = new Cel(frpos_out, index);
layer->addCel(cel);
/* first frame or the palette changes */
@ -172,13 +168,8 @@ bool FliFormat::onLoad(FileOp* fop)
frpos_out++;
SETPAL();
/* add link */
cel = cel_new(frpos_out, index);
if (!cel) {
fop_error(fop, _("Not enough memory\n"));
break;
}
// Add link
cel = new Cel(frpos_out, index);
layer_add_cel(layer, cel);
}
#endif

View File

@ -199,13 +199,13 @@ bool GifFormat::onLoad(FileOp* fop)
}
// Create a new Cel and a image with the whole content of "current_image"
Cel* cel = cel_new(frame_num, 0);
Cel* cel = new Cel(frame_num, 0);
try {
Image* cel_image = image_new_copy(current_image);
try {
// Add the image in the sprite's stock and update the cel's
// reference to the new stock's image.
cel->image = sprite->getStock()->addImage(cel_image);
cel->setImage(sprite->getStock()->addImage(cel_image));
}
catch (...) {
delete cel_image;

View File

@ -141,7 +141,7 @@ bool IcoFormat::onLoad(FileOp* fop)
// Create the first image/cel
Image* image = image_new(imgtype, width, height);
int image_index = sprite->getStock()->addImage(image);
Cel* cel = cel_new(0, image_index);
Cel* cel = new Cel(0, image_index);
layer->addCel(cel);
// Go to the entry start in the file

View File

@ -19,80 +19,27 @@
#include "config.h"
#include "raster/cel.h"
#include "raster/layer.h"
//////////////////////////////////////////////////////////////////////
Cel::Cel(int frame, int image)
: GfxObj(GFXOBJ_CEL)
{
this->frame = frame;
this->image = image;
this->x = 0;
this->y = 0;
this->opacity = 255;
m_frame = frame;
m_image = image;
m_x = 0;
m_y = 0;
m_opacity = 255;
}
Cel::Cel(const Cel& cel)
: GfxObj(cel)
{
this->frame = cel.frame;
this->image = cel.image;
this->x = cel.x;
this->y = cel.y;
this->opacity = cel.opacity;
m_frame = cel.m_frame;
m_image = cel.m_image;
m_x = cel.m_x;
m_y = cel.m_y;
m_opacity = cel.m_opacity;
}
Cel::~Cel()
{
}
int Cel::getMemSize() const
{
return sizeof(Cel);
}
//////////////////////////////////////////////////////////////////////
Cel* cel_new(int frame, int image)
{
return new Cel(frame, image);
}
Cel* cel_new_copy(const Cel* cel)
{
ASSERT(cel);
return new Cel(*cel);
}
void cel_free(Cel* cel)
{
ASSERT(cel);
delete cel;
}
/**
* @warning You have to remove the cel from the layer before to change
* the frame position.
*/
void cel_set_frame(Cel* cel, int frame)
{
cel->frame = frame;
}
void cel_set_image(Cel* cel, int image)
{
cel->image = image;
}
void cel_set_position(Cel* cel, int x, int y)
{
cel->x = x;
cel->y = y;
}
void cel_set_opacity(Cel* cel, int opacity)
{
cel->opacity = opacity;
}

View File

@ -26,26 +26,30 @@ class LayerImage;
class Cel : public GfxObj
{
public:
int frame; // Frame position
int image; // Image index of stock
int x, y; // X/Y screen position
int opacity; // Opacity level
Cel(int frame, int image);
Cel(const Cel& cel);
virtual ~Cel();
int getMemSize() const;
int getFrame() const { return m_frame; }
int getImage() const { return m_image; }
int getX() const { return m_x; }
int getY() const { return m_y; }
int getOpacity() const { return m_opacity; }
void setFrame(int frame) { m_frame = frame; }
void setImage(int image) { m_image = image; }
void setPosition(int x, int y) { m_x = x; m_y = y; }
void setOpacity(int opacity) { m_opacity = opacity; }
int getMemSize() const {
return sizeof(Cel);
}
private:
int m_frame; // Frame position
int m_image; // Image index of stock
int m_x, m_y; // X/Y screen position
int m_opacity; // Opacity level
};
Cel* cel_new(int frame, int image);
Cel* cel_new_copy(const Cel* cel);
void cel_free(Cel* cel);
void cel_set_frame(Cel* cel, int frame);
void cel_set_image(Cel* cel, int image);
void cel_set_position(Cel* cel, int x, int y);
void cel_set_opacity(Cel* cel, int opacity);
#endif

View File

@ -43,11 +43,11 @@ void write_cel(std::ostream& os, Cel* cel)
// ObjectId cel_id = objects->addObject(cel);
// write_raw_uint32(cel_id);
write16(os, cel->frame);
write16(os, cel->image);
write16(os, (int16_t)cel->x);
write16(os, (int16_t)cel->y);
write16(os, cel->opacity);
write16(os, cel->getFrame());
write16(os, cel->getImage());
write16(os, (int16_t)cel->getX());
write16(os, (int16_t)cel->getY());
write16(os, cel->getOpacity());
// objects->removeObject(cel_id);
}
@ -62,10 +62,10 @@ Cel* read_cel(std::istream& is)
int y = (int16_t)read16(is);
int opacity = read16(is);
UniquePtr<Cel> cel(cel_new(frame, imageIndex));
UniquePtr<Cel> cel(new Cel(frame, imageIndex));
cel_set_position(cel, x, y);
cel_set_opacity(cel, opacity);
cel->setPosition(x, y);
cel->setOpacity(opacity);
// objects->insertObject(cel_id, cel);
return cel.release();

View File

@ -80,7 +80,7 @@ void ImagesCollector::collectFromLayer(Layer* layer)
void ImagesCollector::collectImage(Layer* layer, Cel* cel)
{
Image* image = layer->getSprite()->getStock()->getImage(cel->image);
Image* image = layer->getSprite()->getStock()->getImage(cel->getImage());
m_items.push_back(Item(layer, cel, image));
}

View File

@ -116,7 +116,7 @@ int LayerImage::getMemSize() const
const Cel* cel = *it;
size += cel->getMemSize();
const Image* image = getSprite()->getStock()->getImage(cel->image);
const Image* image = getSprite()->getStock()->getImage(cel->getImage());
size += image->getMemSize();
}
@ -130,13 +130,13 @@ void LayerImage::destroyAllCels()
for (; it != end; ++it) {
Cel* cel = *it;
Image* image = getSprite()->getStock()->getImage(cel->image);
Image* image = getSprite()->getStock()->getImage(cel->getImage());
ASSERT(image != NULL);
getSprite()->getStock()->removeImage(image);
image_free(image);
cel_free(cel);
delete cel;
}
m_cels.clear();
}
@ -156,7 +156,7 @@ void LayerImage::addCel(Cel *cel)
CelIterator end = getCelEnd();
for (; it != end; ++it) {
if ((*it)->frame > cel->frame)
if ((*it)->getFrame() > cel->getFrame())
break;
}
@ -185,7 +185,7 @@ const Cel* LayerImage::getCel(int frame) const
for (; it != end; ++it) {
const Cel* cel = *it;
if (cel->frame == frame)
if (cel->getFrame() == frame)
return cel;
}
@ -328,8 +328,8 @@ LayerImage* layer_new_flatten_copy(Sprite* dst_sprite, const Layer* src_layer,
try {
// Create the new cel for the output layer (add the image to stock too).
Cel* cel = cel_new(frame, flatLayer->getSprite()->getStock()->addImage(image));
cel_set_position(cel, x, y);
Cel* cel = new Cel(frame, flatLayer->getSprite()->getStock()->addImage(image));
cel->setPosition(x, y);
// Clear the image and render this frame.
image_clear(image, 0);
@ -358,16 +358,16 @@ void layer_render(const Layer* layer, Image* image, int x, int y, int frame)
Image* src_image;
if (cel) {
ASSERT((cel->image >= 0) &&
(cel->image < layer->getSprite()->getStock()->size()));
ASSERT((cel->getImage() >= 0) &&
(cel->getImage() < layer->getSprite()->getStock()->size()));
src_image = layer->getSprite()->getStock()->getImage(cel->image);
src_image = layer->getSprite()->getStock()->getImage(cel->getImage());
ASSERT(src_image != NULL);
image_merge(image, src_image,
cel->x + x,
cel->y + y,
MID (0, cel->opacity, 255),
cel->getX() + x,
cel->getY() + y,
MID (0, cel->getOpacity(), 255),
static_cast<const LayerImage*>(layer)->getBlendMode());
}
break;

View File

@ -61,7 +61,7 @@ void write_layer(std::ostream& os, LayerSubObjectsSerializer* subObjects, Layer*
Cel* cel = *it;
subObjects->write_cel(os, cel);
Image* image = layer->getSprite()->getStock()->getImage(cel->image);
Image* image = layer->getSprite()->getStock()->getImage(cel->getImage());
ASSERT(image != NULL);
subObjects->write_image(os, image);
@ -118,7 +118,7 @@ Layer* read_layer(std::istream& is, LayerSubObjectsSerializer* subObjects, Sprit
// Read the cel's image
Image* image = subObjects->read_image(is);
sprite->getStock()->replaceImage(cel->image, image);
sprite->getStock()->replaceImage(cel->getImage(), image);
}
break;
}

View File

@ -354,14 +354,14 @@ Image* Sprite::getCurrentImage(int* x, int* y, int* opacity) const
getCurrentLayer()->is_image()) {
const Cel* cel = static_cast<const LayerImage*>(getCurrentLayer())->getCel(getCurrentFrame());
if (cel) {
ASSERT((cel->image >= 0) &&
(cel->image < getStock()->size()));
ASSERT((cel->getImage() >= 0) &&
(cel->getImage() < getStock()->size()));
image = getStock()->getImage(cel->image);
image = getStock()->getImage(cel->getImage());
if (x) *x = cel->x;
if (y) *y = cel->y;
if (opacity) *opacity = MID(0, cel->opacity, 255);
if (x) *x = cel->getX();
if (y) *y = cel->getY();
if (opacity) *opacity = MID(0, cel->getOpacity(), 255);
}
}
@ -385,9 +385,9 @@ void Sprite::remapImages(int frame_from, int frame_to, const std::vector<uint8_t
Cel* cel = *it;
// Remap this Cel because is inside the specified range
if (cel->frame >= frame_from &&
cel->frame <= frame_to) {
Image* image = getStock()->getImage(cel->image);
if (cel->getFrame() >= frame_from &&
cel->getFrame() <= frame_to) {
Image* image = getStock()->getImage(cel->getImage());
for (int y=0; y<image->h; ++y) {
IndexedTraits::address_t ptr = image_address_fast<IndexedTraits>(image, 0, y);

View File

@ -417,7 +417,7 @@ void UndoTransaction::displaceLayers(Layer* layer, int dx, int dy)
CelIterator end = ((LayerImage*)layer)->getCelEnd();
for (; it != end; ++it) {
Cel* cel = *it;
setCelPosition(cel, cel->x+dx, cel->y+dy);
setCelPosition(cel, cel->getX()+dx, cel->getY()+dy);
}
break;
}
@ -454,18 +454,18 @@ void UndoTransaction::backgroundFromLayer(LayerImage* layer, int bgcolor)
for (; it != end; ++it) {
Cel* cel = *it;
ASSERT((cel->image > 0) &&
(cel->image < m_sprite->getStock()->size()));
ASSERT((cel->getImage() > 0) &&
(cel->getImage() < m_sprite->getStock()->size()));
// get the image from the sprite's stock of images
Image* cel_image = m_sprite->getStock()->getImage(cel->image);
Image* cel_image = m_sprite->getStock()->getImage(cel->getImage());
ASSERT(cel_image);
image_clear(bg_image, bgcolor);
image_merge(bg_image, cel_image,
cel->x,
cel->y,
MID(0, cel->opacity, 255),
cel->getX(),
cel->getY(),
MID(0, cel->getOpacity(), 255),
layer->getBlendMode());
// now we have to copy the new image (bg_image) to the cel...
@ -480,7 +480,7 @@ void UndoTransaction::backgroundFromLayer(LayerImage* layer, int bgcolor)
image_copy(cel_image, bg_image, 0, 0);
}
else {
replaceStockImage(cel->image, image_new_copy(bg_image));
replaceStockImage(cel->getImage(), image_new_copy(bg_image));
}
}
@ -495,7 +495,7 @@ void UndoTransaction::backgroundFromLayer(LayerImage* layer, int bgcolor)
int image_index = addImageInStock(cel_image);
// Create the new cel and add it to the new background layer
cel = cel_new(frame, image_index);
cel = new Cel(frame, image_index);
addCel(layer, cel);
}
}
@ -561,7 +561,7 @@ void UndoTransaction::flattenLayers(int bgcolor)
cel = background->getCel(frame);
if (cel) {
cel_image = m_sprite->getStock()->getImage(cel->image);
cel_image = m_sprite->getStock()->getImage(cel->getImage());
ASSERT(cel_image != NULL);
/* we have to save the current state of `cel_image' in the undo */
@ -579,7 +579,7 @@ void UndoTransaction::flattenLayers(int bgcolor)
/* TODO error handling: if (!cel_image) { ... } */
/* here we create the new cel (with the new image `cel_image') */
cel = cel_new(frame, m_sprite->getStock()->addImage(cel_image));
cel = new Cel(frame, m_sprite->getStock()->addImage(cel_image));
/* TODO error handling: if (!cel) { ... } */
/* and finally we add the cel in the background */
@ -654,7 +654,7 @@ void UndoTransaction::newFrameForLayer(Layer* layer, int frame)
for (int c=m_sprite->getTotalFrames()-1; c>=frame; --c) {
Cel* cel = static_cast<LayerImage*>(layer)->getCel(c);
if (cel)
setCelFramePosition(cel, cel->frame+1);
setCelFramePosition(cel, cel->getFrame()+1);
}
copyPreviousFrame(layer, frame);
@ -704,7 +704,7 @@ void UndoTransaction::removeFrameOfLayer(Layer* layer, int frame)
for (++frame; frame<m_sprite->getTotalFrames(); ++frame)
if (Cel* cel = static_cast<LayerImage*>(layer)->getCel(frame))
setCelFramePosition(cel, cel->frame-1);
setCelFramePosition(cel, cel->getFrame()-1);
break;
case GFXOBJ_LAYER_FOLDER: {
@ -729,7 +729,7 @@ void UndoTransaction::copyPreviousFrame(Layer* layer, int frame)
// create a copy of the previous cel
Cel* src_cel = static_cast<LayerImage*>(layer)->getCel(frame-1);
Image* src_image = src_cel ? m_sprite->getStock()->getImage(src_cel->image):
Image* src_image = src_cel ? m_sprite->getStock()->getImage(src_cel->getImage()):
NULL;
// nothing to copy, it will be a transparent cel
@ -741,10 +741,10 @@ void UndoTransaction::copyPreviousFrame(Layer* layer, int frame)
int image_index = addImageInStock(dst_image);
// create the new cel
Cel* dst_cel = cel_new(frame, image_index);
Cel* dst_cel = new Cel(frame, image_index);
if (src_cel) { // copy the data from the previous cel
cel_set_position(dst_cel, src_cel->x, src_cel->y);
cel_set_opacity(dst_cel, src_cel->opacity);
dst_cel->setPosition(src_cel->getX(), src_cel->getY());
dst_cel->setOpacity(src_cel->getOpacity());
}
// add the cel in the layer
@ -772,7 +772,7 @@ void UndoTransaction::removeCel(LayerImage* layer, Cel* cel)
bool used = false;
for (int frame=0; frame<m_sprite->getTotalFrames(); ++frame) {
Cel* it = layer->getCel(frame);
if (it && it != cel && it->image == cel->image) {
if (it && it != cel && it->getImage() == cel->getImage()) {
used = true;
break;
}
@ -781,7 +781,7 @@ void UndoTransaction::removeCel(LayerImage* layer, Cel* cel)
// if the image is only used by this cel,
// we can remove the image from the stock
if (!used)
removeImageFromStock(cel->image);
removeImageFromStock(cel->getImage());
if (isEnabled())
m_undoHistory->undo_remove_cel(layer, cel);
@ -790,7 +790,7 @@ void UndoTransaction::removeCel(LayerImage* layer, Cel* cel)
layer->removeCel(cel);
// and here we destroy the cel
cel_free(cel);
delete cel;
}
void UndoTransaction::setCelFramePosition(Cel* cel, int frame)
@ -801,7 +801,7 @@ void UndoTransaction::setCelFramePosition(Cel* cel, int frame)
if (isEnabled())
m_undoHistory->pushUndoer(new undoers::SetCelFrame(m_undoHistory->getObjects(), cel));
cel->frame = frame;
cel->setFrame(frame);
}
void UndoTransaction::setCelPosition(Cel* cel, int x, int y)
@ -811,8 +811,7 @@ void UndoTransaction::setCelPosition(Cel* cel, int x, int y)
if (isEnabled())
m_undoHistory->pushUndoer(new undoers::SetCelPosition(m_undoHistory->getObjects(), cel));
cel->x = x;
cel->y = y;
cel->setPosition(x, y);
}
void UndoTransaction::setFrameDuration(int frame, int msecs)
@ -876,30 +875,30 @@ void UndoTransaction::moveFrameBeforeLayer(Layer* layer, int frame, int before_f
for (; it != end; ++it) {
Cel* cel = *it;
int new_frame = cel->frame;
int new_frame = cel->getFrame();
// moving the frame to the future
if (frame < before_frame) {
if (cel->frame == frame) {
if (cel->getFrame() == frame) {
new_frame = before_frame-1;
}
else if (cel->frame > frame &&
cel->frame < before_frame) {
else if (cel->getFrame() > frame &&
cel->getFrame() < before_frame) {
new_frame--;
}
}
// moving the frame to the past
else if (before_frame < frame) {
if (cel->frame == frame) {
if (cel->getFrame() == frame) {
new_frame = before_frame;
}
else if (cel->frame >= before_frame &&
cel->frame < frame) {
else if (cel->getFrame() >= before_frame &&
cel->getFrame() < frame) {
new_frame++;
}
}
if (cel->frame != new_frame)
if (cel->getFrame() != new_frame)
setCelFramePosition(cel, new_frame);
}
break;
@ -927,14 +926,14 @@ Cel* UndoTransaction::getCurrentCel()
void UndoTransaction::cropCel(Cel* cel, int x, int y, int w, int h, int bgcolor)
{
Image* cel_image = m_sprite->getStock()->getImage(cel->image);
Image* cel_image = m_sprite->getStock()->getImage(cel->getImage());
ASSERT(cel_image);
// create the new image through a crop
Image* new_image = image_crop(cel_image, x-cel->x, y-cel->y, w, h, bgcolor);
Image* new_image = image_crop(cel_image, x-cel->getX(), y-cel->getY(), w, h, bgcolor);
// replace the image in the stock that is pointed by the cel
replaceStockImage(cel->image, new_image);
replaceStockImage(cel->getImage(), new_image);
// update the cel's position
setCelPosition(cel, x, y);
@ -942,8 +941,8 @@ void UndoTransaction::cropCel(Cel* cel, int x, int y, int w, int h, int bgcolor)
Image* UndoTransaction::getCelImage(Cel* cel)
{
if (cel && cel->image >= 0 && cel->image < m_sprite->getStock()->size())
return m_sprite->getStock()->getImage(cel->image);
if (cel && cel->getImage() >= 0 && cel->getImage() < m_sprite->getStock()->size())
return m_sprite->getStock()->getImage(cel->getImage());
else
return NULL;
}
@ -979,8 +978,8 @@ void UndoTransaction::clearMask(int bgcolor)
}
}
else {
int offset_x = mask->x-cel->x;
int offset_y = mask->y-cel->y;
int offset_x = mask->x-cel->getX();
int offset_y = mask->y-cel->getY();
int u, v, putx, puty;
int x1 = MAX(0, offset_x);
int y1 = MAX(0, offset_y);
@ -1050,11 +1049,11 @@ void UndoTransaction::pasteImage(const Image* src_image, int x, int y, int opaci
Cel* cel = ((LayerImage*)layer)->getCel(m_sprite->getCurrentFrame());
ASSERT(cel);
Image* cel_image = m_sprite->getStock()->getImage(cel->image);
Image* cel_image = m_sprite->getStock()->getImage(cel->getImage());
Image* cel_image2 = image_new_copy(cel_image);
image_merge(cel_image2, src_image, x-cel->x, y-cel->y, opacity, BLEND_MODE_NORMAL);
image_merge(cel_image2, src_image, x-cel->getX(), y-cel->getY(), opacity, BLEND_MODE_NORMAL);
replaceStockImage(cel->image, cel_image2); // TODO fix this, improve, avoid replacing the whole image
replaceStockImage(cel->getImage(), cel_image2); // TODO fix this, improve, avoid replacing the whole image
}
void UndoTransaction::copyToCurrentMask(Mask* mask)

View File

@ -48,5 +48,5 @@ void AddCel::revert(ObjectsContainer* objects, UndoersCollector* redoers)
redoers->pushUndoer(new RemoveCel(objects, layer, cel));
layer->removeCel(cel);
cel_free(cel);
delete cel;
}

View File

@ -29,7 +29,7 @@ using namespace undoers;
SetCelFrame::SetCelFrame(ObjectsContainer* objects, Cel* cel)
: m_celId(objects->addObject(cel))
, m_frame(cel->frame)
, m_frame(cel->getFrame())
{
}
@ -45,5 +45,5 @@ void SetCelFrame::revert(ObjectsContainer* objects, UndoersCollector* redoers)
// Push another SetCelFrame as redoer
redoers->pushUndoer(new SetCelFrame(objects, cel));
cel->frame = m_frame;
cel->setFrame(m_frame);
}

View File

@ -29,7 +29,7 @@ using namespace undoers;
SetCelOpacity::SetCelOpacity(ObjectsContainer* objects, Cel* cel)
: m_celId(objects->addObject(cel))
, m_opacity(cel->opacity)
, m_opacity(cel->getOpacity())
{
}
@ -45,5 +45,5 @@ void SetCelOpacity::revert(ObjectsContainer* objects, UndoersCollector* redoers)
// Push another SetCelOpacity as redoer
redoers->pushUndoer(new SetCelOpacity(objects, cel));
cel->opacity = m_opacity;
cel->setOpacity(m_opacity);
}

View File

@ -29,8 +29,8 @@ using namespace undoers;
SetCelPosition::SetCelPosition(ObjectsContainer* objects, Cel* cel)
: m_celId(objects->addObject(cel))
, m_x(cel->x)
, m_y(cel->y)
, m_x(cel->getX())
, m_y(cel->getY())
{
}
@ -46,6 +46,5 @@ void SetCelPosition::revert(ObjectsContainer* objects, UndoersCollector* redoers
// Push another SetCelPosition as redoer
redoers->pushUndoer(new SetCelPosition(objects, cel));
cel->x = m_x;
cel->y = m_y;
cel->setPosition(m_x, m_y);
}

View File

@ -96,7 +96,7 @@ void move_cel(DocumentWriter& document)
if (undo->isEnabled())
undo->pushUndoer(new undoers::SetCelFrame(undo->getObjects(), src_cel));
src_cel->frame = dst_frame;
src_cel->setFrame(dst_frame);
}
/* move the cel in different layers */
else {
@ -104,34 +104,33 @@ void move_cel(DocumentWriter& document)
undo->undo_remove_cel(src_layer, src_cel);
static_cast<LayerImage*>(src_layer)->removeCel(src_cel);
src_cel->frame = dst_frame;
src_cel->setFrame(dst_frame);
/* if we are moving a cel from a transparent layer to the
background layer, we have to clear the background of the
image */
if (!src_layer->is_background() &&
dst_layer->is_background()) {
Image *src_image = sprite->getStock()->getImage(src_cel->image);
Image *src_image = sprite->getStock()->getImage(src_cel->getImage());
Image *dst_image = image_crop(src_image,
-src_cel->x,
-src_cel->y,
-src_cel->getX(),
-src_cel->getY(),
sprite->getWidth(),
sprite->getHeight(), 0);
if (undo->isEnabled()) {
undo->undo_replace_image(sprite->getStock(), src_cel->image);
undo->undo_replace_image(sprite->getStock(), src_cel->getImage());
undo->pushUndoer(new undoers::SetCelPosition(undo->getObjects(), src_cel));
undo->pushUndoer(new undoers::SetCelOpacity(undo->getObjects(), src_cel));
}
image_clear(dst_image, app_get_color_to_clear_layer(dst_layer));
image_merge(dst_image, src_image, src_cel->x, src_cel->y, 255, BLEND_MODE_NORMAL);
image_merge(dst_image, src_image, src_cel->getX(), src_cel->getY(), 255, BLEND_MODE_NORMAL);
src_cel->x = 0;
src_cel->y = 0;
src_cel->opacity = 255;
src_cel->setPosition(0, 0);
src_cel->setOpacity(255);
sprite->getStock()->replaceImage(src_cel->image, dst_image);
sprite->getStock()->replaceImage(src_cel->getImage(), dst_image);
image_free(src_image);
}
@ -181,7 +180,7 @@ void copy_cel(DocumentWriter& document)
/* move the cel in the same layer */
if (src_cel != NULL) {
Image *src_image = sprite->getStock()->getImage(src_cel->image);
Image *src_image = sprite->getStock()->getImage(src_cel->getImage());
Image *dst_image;
int image_index;
int dst_cel_x;
@ -194,13 +193,13 @@ void copy_cel(DocumentWriter& document)
if (!src_layer->is_background() &&
dst_layer->is_background()) {
dst_image = image_crop(src_image,
-src_cel->x,
-src_cel->y,
-src_cel->getX(),
-src_cel->getY(),
sprite->getWidth(),
sprite->getHeight(), 0);
image_clear(dst_image, app_get_color_to_clear_layer(dst_layer));
image_merge(dst_image, src_image, src_cel->x, src_cel->y, 255, BLEND_MODE_NORMAL);
image_merge(dst_image, src_image, src_cel->getX(), src_cel->getY(), 255, BLEND_MODE_NORMAL);
dst_cel_x = 0;
dst_cel_y = 0;
@ -208,9 +207,9 @@ void copy_cel(DocumentWriter& document)
}
else {
dst_image = image_new_copy(src_image);
dst_cel_x = src_cel->x;
dst_cel_y = src_cel->y;
dst_cel_opacity = src_cel->opacity;
dst_cel_x = src_cel->getX();
dst_cel_y = src_cel->getY();
dst_cel_opacity = src_cel->getOpacity();
}
/* add the image in the stock */
@ -219,9 +218,9 @@ void copy_cel(DocumentWriter& document)
undo->undo_add_image(sprite->getStock(), image_index);
/* create the new cel */
dst_cel = cel_new(dst_frame, image_index);
cel_set_position(dst_cel, dst_cel_x, dst_cel_y);
cel_set_opacity(dst_cel, dst_cel_opacity);
dst_cel = new Cel(dst_frame, image_index);
dst_cel->setPosition(dst_cel_x, dst_cel_y);
dst_cel->setOpacity(dst_cel_opacity);
if (undo->isEnabled())
undo->undo_add_cel(dst_layer, dst_cel);
@ -248,7 +247,7 @@ static void remove_cel(Sprite* sprite, undo::UndoHistory* undo, LayerImage *laye
used = false;
for (frame=0; frame<sprite->getTotalFrames(); ++frame) {
it = layer->getCel(frame);
if (it != NULL && it != cel && it->image == cel->image) {
if (it != NULL && it != cel && it->getImage() == cel->getImage()) {
used = true;
break;
}
@ -260,10 +259,10 @@ static void remove_cel(Sprite* sprite, undo::UndoHistory* undo, LayerImage *laye
if (!used) {
/* if the image is only used by this cel, we can remove the
image from the stock */
image = sprite->getStock()->getImage(cel->image);
image = sprite->getStock()->getImage(cel->getImage());
if (undo->isEnabled())
undo->undo_remove_image(sprite->getStock(), cel->image);
undo->undo_remove_image(sprite->getStock(), cel->getImage());
sprite->getStock()->removeImage(image);
image_free(image);
@ -276,6 +275,6 @@ static void remove_cel(Sprite* sprite, undo::UndoHistory* undo, LayerImage *laye
// Remove the cel
layer->removeCel(cel);
cel_free(cel);
delete cel;
}
}

View File

@ -240,7 +240,7 @@ void clipboard::paste(DocumentWriter& document)
// Create the new cel in the current frame with the recently
// created image
Cel* cel = cel_new(sprite->getCurrentFrame(), dst_image_index);
Cel* cel = new Cel(sprite->getCurrentFrame(), dst_image_index);
// Add the cel to the layer
undoTransaction.addCel(layer, cel);

View File

@ -108,8 +108,8 @@ int interactive_move_layer(int mode, bool use_undo, int (*callback)())
if (!cel)
return false;
begin_x = cel->x;
begin_y = cel->y;
begin_x = cel->getX();
begin_y = cel->getY();
editor->hide_drawing_cursor();
jmouse_set_cursor(JI_CURSOR_MOVE);
@ -118,20 +118,20 @@ int interactive_move_layer(int mode, bool use_undo, int (*callback)())
do {
if (update) {
cel->x = begin_x - start_x + new_x;
cel->y = begin_y - start_y + new_y;
cel->setPosition(begin_x - start_x + new_x,
begin_y - start_y + new_y);
/* update layer-bounds */
// Update layer-bounds.
editor->invalidate();
/* update status bar */
// Update status bar.
app_get_statusbar()->setStatusText
(0,
"Pos %3d %3d Offset %3d %3d",
(int)cel->x,
(int)cel->y,
(int)(cel->x - begin_x),
(int)(cel->y - begin_y));
(int)cel->getX(),
(int)cel->getY(),
(int)(cel->getX() - begin_x),
(int)(cel->getY() - begin_y));
/* update clock */
quiet_clock = ji_clock;
@ -149,9 +149,9 @@ int interactive_move_layer(int mode, bool use_undo, int (*callback)())
gui_feedback();
} while (editor->editor_click(&new_x, &new_y, &update, NULL));
new_x = cel->x;
new_y = cel->y;
cel_set_position(cel, begin_x, begin_y);
new_x = cel->getX();
new_y = cel->getY();
cel->setPosition(begin_x, begin_y);
/* the position was changed */
if (!editor->editor_click_cancel()) {
@ -162,7 +162,7 @@ int interactive_move_layer(int mode, bool use_undo, int (*callback)())
undo->pushUndoer(new undoers::SetCelPosition(undo->getObjects(), cel));
}
cel_set_position(cel, new_x, new_y);
cel->setPosition(new_x, new_y);
ret = true;
}
/* the position wasn't changed */

View File

@ -580,9 +580,9 @@ void RenderEngine::renderLayer(const Document* document,
src_image = rastering_image;
}
/* if not, we use the original cel-image from the images' stock */
else if ((cel->image >= 0) &&
(cel->image < layer->getSprite()->getStock()->size()))
src_image = layer->getSprite()->getStock()->getImage(cel->image);
else if ((cel->getImage() >= 0) &&
(cel->getImage() < layer->getSprite()->getStock()->size()))
src_image = layer->getSprite()->getStock()->getImage(cel->getImage());
else
src_image = NULL;
@ -590,12 +590,12 @@ void RenderEngine::renderLayer(const Document* document,
int output_opacity;
register int t;
output_opacity = MID(0, cel->opacity, 255);
output_opacity = MID(0, cel->getOpacity(), 255);
output_opacity = INT_MULT(output_opacity, global_opacity, t);
(*zoomed_func)(image, src_image, sprite->getPalette(frame),
(cel->x << zoom) - source_x,
(cel->y << zoom) - source_y,
(cel->getX() << zoom) - source_x,
(cel->getY() << zoom) - source_y,
output_opacity,
static_cast<const LayerImage*>(layer)->getBlendMode(), zoom);
}
@ -623,13 +623,13 @@ void RenderEngine::renderLayer(const Document* document,
if (layer == sprite->getCurrentLayer() &&
document->getExtraCel() != NULL) {
Cel* extraCel = document->getExtraCel();
if (extraCel->opacity > 0) {
if (extraCel->getOpacity() > 0) {
Image* extraImage = document->getExtraCelImage();
(*zoomed_func)(image, extraImage, sprite->getPalette(frame),
(extraCel->x << zoom) - source_x,
(extraCel->y << zoom) - source_y,
extraCel->opacity, BLEND_MODE_NORMAL, zoom);
(extraCel->getX() << zoom) - source_x,
(extraCel->getY() << zoom) - source_y,
extraCel->getOpacity(), BLEND_MODE_NORMAL, zoom);
}
}
}

View File

@ -88,9 +88,9 @@ BITMAP* generate_thumbnail(const Layer* layer, const Cel* cel, const Sprite *spr
return NULL;
thumbnail_render(bmp,
sprite->getStock()->getImage(cel->image),
sprite->getStock()->getImage(cel->getImage()),
!layer->is_background(),
sprite->getPalette(cel->frame));
sprite->getPalette(cel->getFrame()));
thumbnail = new Thumbnail(cel, bmp);
if (!thumbnail) {

View File

@ -1825,7 +1825,7 @@ public:
if (m_layer->is_image()) {
m_cel = static_cast<LayerImage*>(sprite->getCurrentLayer())->getCel(sprite->getCurrentFrame());
if (m_cel)
m_cel_image = sprite->getStock()->getImage(m_cel->image);
m_cel_image = sprite->getStock()->getImage(m_cel->getImage());
}
if (m_cel == NULL) {
@ -1835,24 +1835,24 @@ public:
m_cel_image->mask_color);
// create the cel
m_cel = cel_new(sprite->getCurrentFrame(), 0);
m_cel = new Cel(sprite->getCurrentFrame(), 0);
static_cast<LayerImage*>(sprite->getCurrentLayer())->addCel(m_cel);
m_cel_created = true;
}
m_old_cel_x = m_cel->x;
m_old_cel_y = m_cel->y;
m_old_cel_x = m_cel->getX();
m_old_cel_y = m_cel->getY();
// region to draw
int x1, y1, x2, y2;
// non-tiled
if (m_tiled_mode == TILED_NONE) {
x1 = MIN(m_cel->x, 0);
y1 = MIN(m_cel->y, 0);
x2 = MAX(m_cel->x+m_cel_image->w, m_sprite->getWidth());
y2 = MAX(m_cel->y+m_cel_image->h, m_sprite->getHeight());
x1 = MIN(m_cel->getX(), 0);
y1 = MIN(m_cel->getY(), 0);
x2 = MAX(m_cel->getX()+m_cel_image->w, m_sprite->getWidth());
y2 = MAX(m_cel->getY()+m_cel_image->h, m_sprite->getHeight());
}
else { // tiled
x1 = 0;
@ -1863,8 +1863,8 @@ public:
// create two copies of the image region which we'll modify with the tool
m_src_image = image_crop(m_cel_image,
x1-m_cel->x,
y1-m_cel->y, x2-x1, y2-y1,
x1-m_cel->getX(),
y1-m_cel->getY(), x2-x1, y2-y1,
m_cel_image->mask_color);
m_dst_image = image_new_copy(m_src_image);
@ -1887,8 +1887,7 @@ public:
// we have to modify the cel position because it's used in the
// `render_sprite' routine to draw the `dst_image'
m_cel->x = x1;
m_cel->y = y1;
m_cel->setPosition(x1, y1);
m_offset.x = -x1;
m_offset.y = -y1;
@ -1915,8 +1914,8 @@ public:
if (getInk()->isPaint()) {
// If the size of each image is the same, we can create an
// undo with only the differences between both images.
if (m_cel->x == m_old_cel_x &&
m_cel->y == m_old_cel_y &&
if (m_cel->getX() == m_old_cel_x &&
m_cel->getY() == m_old_cel_y &&
m_cel_image->w == m_dst_image->w &&
m_cel_image->h == m_dst_image->h) {
// Was the 'cel_image' created in the start of the tool-loop?.
@ -1927,7 +1926,7 @@ public:
image_copy(m_cel_image, m_dst_image, 0, 0);
// Add the 'cel_image' in the images' stock of the sprite.
m_cel->image = m_sprite->getStock()->addImage(m_cel_image);
m_cel->setImage(m_sprite->getStock()->addImage(m_cel_image));
// Is the undo enabled?.
if (undo->isEnabled()) {
@ -1937,7 +1936,7 @@ public:
// We create the undo information (for the new cel_image
// in the stock and the new cel in the layer)...
undo->undo_open();
undo->undo_add_image(m_sprite->getStock(), m_cel->image);
undo->undo_add_image(m_sprite->getStock(), m_cel->getImage());
undo->undo_add_cel(m_sprite->getCurrentLayer(), m_cel);
undo->undo_close();
@ -1968,25 +1967,23 @@ public:
if (undo->isEnabled()) {
undo->undo_open();
if (m_cel->x != m_old_cel_x ||
m_cel->y != m_old_cel_y) {
int x = m_cel->x;
int y = m_cel->y;
m_cel->y = m_old_cel_y;
m_cel->x = m_old_cel_x;
if (m_cel->getX() != m_old_cel_x ||
m_cel->getY() != m_old_cel_y) {
int x = m_cel->getX();
int y = m_cel->getY();
m_cel->setPosition(m_old_cel_x, m_old_cel_y);
undo->pushUndoer(new undoers::SetCelPosition(undo->getObjects(), m_cel));
m_cel->x = x;
m_cel->y = y;
m_cel->setPosition(x, y);
}
undo->undo_replace_image(m_sprite->getStock(), m_cel->image);
undo->undo_replace_image(m_sprite->getStock(), m_cel->getImage());
undo->undo_close();
}
// Replace the image in the stock.
m_sprite->getStock()->replaceImage(m_cel->image, m_dst_image);
m_sprite->getStock()->replaceImage(m_cel->getImage(), m_dst_image);
// Destroy the old cel image.
image_free(m_cel_image);
@ -2005,8 +2002,7 @@ public:
if (m_canceled || !getInk()->isPaint()) {
// Here we destroy the temporary 'cel' created and restore all as it was before
m_cel->x = m_old_cel_x;
m_cel->y = m_old_cel_y;
m_cel->setPosition(m_old_cel_x, m_old_cel_y);
if (m_cel_created) {
static_cast<LayerImage*>(m_layer)->removeCel(m_cel);

View File

@ -95,8 +95,8 @@ public:
{
// Create a new UndoTransaction to move the pixels to other position
const Cel* cel = m_documentReader->getExtraCel();
m_initial_x = cel->x;
m_initial_y = cel->y;
m_initial_x = cel->getX();
m_initial_y = cel->getY();
m_isDragging = true;
m_catch_x = x;
@ -120,25 +120,24 @@ public:
int x1, y1, x2, y2;
int u1, v1, u2, v2;
x1 = cel->x;
y1 = cel->y;
x2 = cel->x + image->w;
y2 = cel->y + image->h;
x1 = cel->getX();
y1 = cel->getY();
x2 = cel->getX() + image->w;
y2 = cel->getY() + image->h;
int new_x = m_initial_x + x - m_catch_x;
int new_y = m_initial_y + y - m_catch_y;
// No movement
if (cel->x == new_x && cel->y == new_y)
if (cel->getX() == new_x && cel->getY() == new_y)
return Rect();
cel->x = new_x;
cel->y = new_y;
cel->setPosition(new_x, new_y);
u1 = cel->x;
v1 = cel->y;
u2 = cel->x + image->w;
v2 = cel->y + image->h;
u1 = cel->getX();
v1 = cel->getY();
u2 = cel->getX() + image->w;
v2 = cel->getY() + image->h;
return Rect(MIN(x1, u1), MIN(y1, v1),
MAX(x2, u2) - MIN(x1, u1) + 1,
@ -157,11 +156,11 @@ public:
// Show the mask again in the new position
if (m_firstDrop) {
m_firstDrop = false;
m_undoTransaction.setMaskPosition(cel->x, cel->y);
m_undoTransaction.setMaskPosition(cel->getX(), cel->getY());
}
else {
documentWriter->getMask()->x = cel->x;
documentWriter->getMask()->y = cel->y;
documentWriter->getMask()->x = cel->getX();
documentWriter->getMask()->y = cel->getY();
}
documentWriter->generateMaskBoundaries();
}
@ -178,7 +177,7 @@ public:
{
DocumentWriter documentWriter(m_documentReader);
m_undoTransaction.pasteImage(image, cel->x, cel->y, cel->opacity);
m_undoTransaction.pasteImage(image, cel->getX(), cel->getY(), cel->getOpacity());
m_undoTransaction.commit();
}
}
@ -196,7 +195,7 @@ public:
ASSERT(cel != NULL);
ASSERT(image != NULL);
return Rect(cel->x, cel->y, image->w, image->h);
return Rect(cel->getX(), cel->getY(), image->w, image->h);
}
void setMaskColor(uint32_t mask_color)

View File

@ -752,7 +752,7 @@ static void slider_change_hook(Slider* slider)
Cel* cel = ((LayerImage*)sprite->getCurrentLayer())->getCel(sprite->getCurrentFrame());
if (cel) {
// Update the opacity
cel->opacity = slider->getValue();
cel->setOpacity(slider->getValue());
// Update the editors
update_screen_for_document(document);
@ -795,7 +795,7 @@ void StatusBar::updateFromLayer()
sprite->getCurrentLayer()->is_image() &&
!sprite->getCurrentLayer()->is_background() &&
(cel = ((LayerImage*)sprite->getCurrentLayer())->getCel(sprite->getCurrentFrame()))) {
m_slider->setValue(MID(0, cel->opacity, 255));
m_slider->setValue(MID(0, cel->getOpacity(), 255));
m_slider->setEnabled(true);
}
else {