mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-16 14:42:44 +00:00
Remove all public fields of Cel adding accessors.
This commit is contained in:
parent
9077ab8357
commit
a17c767e65
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user