mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-27 00:57:50 +00:00
Ignore invisible layers and channels in XCF files.
This commit is contained in:
parent
45e22a5963
commit
8c80409e6e
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=58440
79
graphics/sdl_image/files/patch-ad
Normal file
79
graphics/sdl_image/files/patch-ad
Normal file
@ -0,0 +1,79 @@
|
||||
--- IMG_xcf.c.orig Mon Apr 29 03:01:48 2002
|
||||
+++ IMG_xcf.c Mon Apr 29 03:17:07 2002
|
||||
@@ -166,6 +166,7 @@
|
||||
|
||||
Uint32 offset_x;
|
||||
Uint32 offset_y;
|
||||
+ int visible : 1;
|
||||
} xcf_layer;
|
||||
|
||||
typedef struct {
|
||||
@@ -179,6 +180,7 @@
|
||||
Uint32 color;
|
||||
Uint32 opacity;
|
||||
int selection : 1;
|
||||
+ int visible : 1;
|
||||
} xcf_channel;
|
||||
|
||||
typedef struct {
|
||||
@@ -245,7 +247,9 @@
|
||||
prop->id = SDL_ReadBE32 (src);
|
||||
prop->length = SDL_ReadBE32 (src);
|
||||
|
||||
+#if 0
|
||||
printf ("%.8X: %s: %d\n", SDL_RWtell (src), prop->id < 25 ? prop_names [prop->id] : "unknown", prop->length);
|
||||
+#endif
|
||||
|
||||
switch (prop->id) {
|
||||
case PROP_COLORMAP:
|
||||
@@ -265,6 +269,9 @@
|
||||
case PROP_COLOR:
|
||||
SDL_RWread (src, &prop->data, prop->length, 1);
|
||||
break;
|
||||
+ case PROP_VISIBLE:
|
||||
+ prop->data.visible = SDL_ReadBE32 (src);
|
||||
+ break;
|
||||
default:
|
||||
// SDL_RWread (src, &prop->data, prop->length, 1);
|
||||
SDL_RWseek (src, prop->length, SEEK_CUR);
|
||||
@@ -332,6 +339,8 @@
|
||||
if (prop.id == PROP_OFFSETS) {
|
||||
l->offset_x = prop.data.offset.x;
|
||||
l->offset_y = prop.data.offset.y;
|
||||
+ } else if (prop.id == PROP_VISIBLE) {
|
||||
+ l->visible = prop.data.visible ? 1 : 0;
|
||||
}
|
||||
} while (prop.id != PROP_END);
|
||||
|
||||
@@ -371,6 +380,9 @@
|
||||
case PROP_SELECTION:
|
||||
l->selection = 1;
|
||||
break;
|
||||
+ case PROP_VISIBLE:
|
||||
+ l->visible = prop.data.visible ? 1 : 0;
|
||||
+ break;
|
||||
default:
|
||||
}
|
||||
} while (prop.id != PROP_END);
|
||||
@@ -724,9 +736,10 @@
|
||||
rd.y = layer->offset_y;
|
||||
rd.w = layer->width;
|
||||
rd.h = layer->height;
|
||||
- free_xcf_layer (layer);
|
||||
|
||||
- SDL_BlitSurface (lays, &rs, surface, &rd);
|
||||
+ if (layer->visible)
|
||||
+ SDL_BlitSurface (lays, &rs, surface, &rd);
|
||||
+ free_xcf_layer (layer);
|
||||
}
|
||||
|
||||
SDL_FreeSurface (lays);
|
||||
@@ -756,7 +769,7 @@
|
||||
}
|
||||
for (i = 0; i < chnls; i++) {
|
||||
// printf ("CNLBLT %i\n", i);
|
||||
- if (!channel [i]->selection) {
|
||||
+ if (!channel [i]->selection && channel [i]->visible) {
|
||||
create_channel_surface (chs, head->image_type, channel [i]->color, channel [i]->opacity);
|
||||
SDL_BlitSurface (chs, NULL, surface, NULL);
|
||||
}
|
Loading…
Reference in New Issue
Block a user