Updated with upstream update

This commit is contained in:
2023-10-30 15:55:30 -07:00
parent 098531073c
commit 3bbdd873ef
584 changed files with 91827 additions and 70362 deletions

View File

@ -427,6 +427,8 @@ icns_attach_image (PikaImage *image,
if (temp_file_type && procedure_name)
{
PikaProcedure *procedure;
temp_file = pika_temp_file (temp_file_type);
fp = g_fopen (g_file_peek_path (temp_file), "wb");
@ -443,12 +445,11 @@ icns_attach_image (PikaImage *image,
fwrite (icns->data + 8, sizeof (guchar), icns->size - 8, fp);
fclose (fp);
return_vals =
pika_pdb_run_procedure (pika_get_pdb (),
procedure_name,
PIKA_TYPE_RUN_MODE, PIKA_RUN_NONINTERACTIVE,
G_TYPE_FILE, temp_file,
G_TYPE_NONE);
procedure = pika_pdb_lookup_procedure (pika_get_pdb (), procedure_name);
return_vals = pika_procedure_run (procedure,
"run-mode", PIKA_RUN_NONINTERACTIVE,
"file", temp_file,
NULL);
}
if (temp_image && return_vals)
@ -464,9 +465,9 @@ icns_attach_image (PikaImage *image,
g_file_delete (temp_file, NULL, NULL);
g_object_unref (temp_file);
pika_value_array_unref (return_vals);
g_free (layers);
}
g_clear_pointer (&return_vals, pika_value_array_unref);
}
else
{
@ -548,6 +549,7 @@ icns_load_thumbnail_image (GFile *file,
GError **error)
{
gint w = 0;
gint target_w = *width;
FILE *fp;
PikaImage *image = NULL;
IcnsResource *icns;
@ -586,16 +588,38 @@ icns_load_thumbnail_image (GFile *file,
resources = g_new (IcnsResource, 256);
while (resource_get_next (icns, &resources[nResources++])) {}
*width = 0;
*height = 0;
for (i = 0; iconTypes[i].type; i++)
{
if ((icns = resource_find (resources, iconTypes[i].type, nResources)))
{
if (iconTypes[i].width > w)
if (iconTypes[i].width > w && iconTypes[i].width <= target_w)
{
w = iconTypes[i].width;
match = i;
}
}
*width = MAX (*width, iconTypes[i].width);
*height = MAX (*height, iconTypes[i].height);
}
if (match == -1)
{
/* We didn't find any icon with size smaller or equal to the target.
* Settle with the smallest bigger icon instead.
*/
for (i = 0; iconTypes[i].type; i++)
{
if ((icns = resource_find (resources, iconTypes[i].type, nResources)))
{
if (match == -1 || iconTypes[i].width < w)
{
w = iconTypes[i].width;
match = i;
}
}
}
}
if (match > -1)

View File

@ -417,7 +417,6 @@ icns_export_image (GFile *file,
GList *iter;
gint i;
guint32 file_size = 8;
PikaValueArray *return_vals = NULL;
gint duplicates[ICNS_TYPE_NUM];
for (i = 0; i < ICNS_TYPE_NUM; i++)
@ -456,6 +455,8 @@ icns_export_image (GFile *file,
/* MacOS X format icons */
if (match != -1 && duplicates[match] == 0)
{
PikaProcedure *procedure;
PikaValueArray *return_vals;
PikaDrawable **drawables = NULL;
GFile *temp_file = NULL;
PikaObjectArray *args;
@ -470,23 +471,22 @@ icns_export_image (GFile *file,
args = pika_object_array_new (PIKA_TYPE_DRAWABLE, (GObject **) drawables, 1, FALSE);
return_vals =
pika_pdb_run_procedure (pika_get_pdb (),
"file-png-save",
PIKA_TYPE_RUN_MODE, PIKA_RUN_NONINTERACTIVE,
PIKA_TYPE_IMAGE, image,
G_TYPE_INT, 1,
PIKA_TYPE_OBJECT_ARRAY, args,
G_TYPE_FILE, temp_file,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_INT, 9,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_BOOLEAN, FALSE,
G_TYPE_NONE);
procedure = pika_pdb_lookup_procedure (pika_get_pdb (), "file-png-save");
return_vals = pika_procedure_run (procedure,
"run-mode", PIKA_RUN_NONINTERACTIVE,
"image", image,
"num-drawables", 1,
"drawables", args,
"file", temp_file,
"interlaced", FALSE,
"compression", 9,
"bkgd", FALSE,
"offs", FALSE,
"phys", FALSE,
"time", FALSE,
"save-transparent", FALSE,
"optimize-palette", FALSE,
NULL);
pika_object_array_free (args);
g_clear_pointer (&drawables, g_free);

View File

@ -59,33 +59,36 @@ struct _IcnsClass
};
#define ICNS_TYPE (icns_get_type ())
#define ICNS (obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ICNS_TYPE, Icns))
#define ICNS_TYPE (icns_get_type ())
#define ICNS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ICNS_TYPE, Icns))
GType icns_get_type (void) G_GNUC_CONST;
static GList * icns_query_procedures (PikaPlugIn *plug_in);
static PikaProcedure * icns_create_procedure (PikaPlugIn *plug_in,
const gchar *name);
static GList * icns_query_procedures (PikaPlugIn *plug_in);
static PikaProcedure * icns_create_procedure (PikaPlugIn *plug_in,
const gchar *name);
static PikaValueArray * icns_load (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
const PikaValueArray *args,
gpointer run_data);
static PikaValueArray * icns_load_thumb (PikaProcedure *procedure,
GFile *file,
gint size,
const PikaValueArray *args,
gpointer run_data);
static PikaValueArray * icns_save (PikaProcedure *procedure,
PikaRunMode run_mode,
PikaImage *image,
gint n_drawables,
PikaDrawable **drawables,
GFile *file,
const PikaValueArray *args,
gpointer run_data);
static PikaValueArray * icns_load (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
PikaMetadata *metadata,
PikaMetadataLoadFlags *flags,
PikaProcedureConfig *config,
gpointer run_data);
static PikaValueArray * icns_load_thumb (PikaProcedure *procedure,
GFile *file,
gint size,
PikaProcedureConfig *config,
gpointer run_data);
static PikaValueArray * icns_save (PikaProcedure *procedure,
PikaRunMode run_mode,
PikaImage *image,
gint n_drawables,
PikaDrawable **drawables,
GFile *file,
PikaMetadata *metadata,
PikaProcedureConfig *config,
gpointer run_data);
G_DEFINE_TYPE (Icns, icns, PIKA_TYPE_PLUG_IN)
@ -172,7 +175,7 @@ icns_create_procedure (PikaPlugIn *plug_in,
{
procedure = pika_save_procedure_new (plug_in, name,
PIKA_PDB_PROC_TYPE_PLUGIN,
icns_save, NULL, NULL);
FALSE, icns_save, NULL, NULL);
pika_procedure_set_image_types (procedure, "*");
@ -198,11 +201,13 @@ icns_create_procedure (PikaPlugIn *plug_in,
}
static PikaValueArray *
icns_load (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
const PikaValueArray *args,
gpointer run_data)
icns_load (PikaProcedure *procedure,
PikaRunMode run_mode,
GFile *file,
PikaMetadata *metadata,
PikaMetadataLoadFlags *flags,
PikaProcedureConfig *config,
gpointer run_data)
{
PikaValueArray *return_vals;
PikaImage *image;
@ -227,11 +232,11 @@ icns_load (PikaProcedure *procedure,
}
static PikaValueArray *
icns_load_thumb (PikaProcedure *procedure,
GFile *file,
gint size,
const PikaValueArray *args,
gpointer run_data)
icns_load_thumb (PikaProcedure *procedure,
GFile *file,
gint size,
PikaProcedureConfig *config,
gpointer run_data)
{
PikaValueArray *return_vals;
gint width;
@ -272,7 +277,8 @@ icns_save (PikaProcedure *procedure,
gint n_drawables,
PikaDrawable **drawables,
GFile *file,
const PikaValueArray *args,
PikaMetadata *metadata,
PikaProcedureConfig *config,
gpointer run_data)
{
PikaPDBStatusType status;