⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdyntextcompat.c

📁 GIMP Dynamic Text是GIMP的插件程序
💻 C
字号:
/* * GIMP Dynamic Text -- This is a plug-in for The GIMP 1.0 * Copyright (C) 1998,1999,2000 Marco Lamberto <lm@geocities.com> * Web page: http://www.geocities.com/Tokyo/1474/gimp/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id: gdyntextcompat.h,v 1.1 1999/12/29 11:19:52 lm Exp $ */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <gtk/gtk.h>#include "gdyntext.h"#include "font_selection.h"gboolean gdt_compat_load(GdtVals *data){	gchar *gdtparams = NULL;	gchar *gdtparams0 = NULL;	gchar **params = NULL;	gchar font_family[1024];	gchar font_style[1024];	gint	font_size;	gint	font_metric;	GimpParasite *parasite = NULL;	if ((parasite = gimp_drawable_parasite_find(data->drawable_id,		GDYNTEXT_PARASITE_144)) != NULL) {		/* GDynText 1.4.4 - xxxxx uses one parasite */		gdtparams = strdup(gimp_parasite_data(parasite));		gimp_parasite_free(parasite);	} else if ((parasite = gimp_drawable_parasite_find(data->drawable_id,		GDYNTEXT_PARASITE_131)) != NULL) {		/* GDynText 1.3.1 - 1.4.3 uses one parasite */		gdtparams = strdup(gimp_parasite_data(parasite));		gimp_parasite_free(parasite);	} else if ((parasite = gimp_drawable_parasite_find(data->drawable_id,		GDYNTEXT_PARASITE_130_MAGIC)) != NULL) {		/* GDynText 1.3.0 uses too parasites and no serialization!! */		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_TEXT);		strncpy(data->text, gimp_parasite_data(parasite), gimp_parasite_data_size(parasite));		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_FONT_FAMILY);		strncpy(font_family, gimp_parasite_data(parasite), gimp_parasite_data_size(parasite));		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_FONT_STYLE);		strncpy(font_style, gimp_parasite_data(parasite), gimp_parasite_data_size(parasite));		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_FONT_SIZE);		font_size = *(gint32*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_FONT_METRIC);		font_metric = *(gint*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_FONT_COLOR);		data->color = *(gint32*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_ANTIALIAS);		data->antialias = *(gboolean*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_ALIGNMENT);		data->alignment = *(GdtAlign*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_ROTATION);		data->rotation = *(gint*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		parasite = gimp_drawable_parasite_find(data->drawable_id,			GDYNTEXT_PARASITE_130_PREVIEW);		data->preview = *(gboolean*)gimp_parasite_data(parasite);		gimp_parasite_free(parasite);		/* FIXME: don't exit here!! */		return TRUE;	}	if (gdtparams == NULL)		gdtparams = gimp_layer_get_name(data->layer_id);	if (!gimp_drawable_has_alpha(data->drawable_id) ||		strncmp(gdtparams, "GDT", 3) != 0 ||		GDT_MAGIC_REV(gdtparams) == GDT_MAGIC_REV(GDYNTEXT_MAGIC))	{		return FALSE;	} else if (GDT_MAGIC_REV(gdtparams) > GDT_MAGIC_REV(GDYNTEXT_MAGIC)) {		data->messages = g_list_append(data->messages, _(			" WARNING: GDynText is too old!"			" A newer version is required to handle this layer."			" Get it from "GDYNTEXT_WEB_PAGE""));		return TRUE;	}	gdtparams0 = g_strndup(gdtparams + 6, strlen(gdtparams) - 7);	params = g_strsplit(gdtparams0, "}{", -1);	g_free(gdtparams0);	data->new_layer		= FALSE;	data->color				= strtol(params[C_FONT_COLOR], (char **)NULL, 16);	data->antialias		= atoi(params[C_ANTIALIAS]);	font_size					= atoi(params[C_FONT_SIZE]);	font_metric				= atoi(params[C_FONT_SIZE_T]);		/* older GDT < 0.6 formats don't have alignment */	data->alignment = GDT_MAGIC_REV(gdtparams) < 6 ? LEFT : atoi(params[C_ALIGNMENT]);		/* older GDT < 0.7 formats don't have rotation */	data->rotation = GDT_MAGIC_REV(gdtparams) < 7 ? 0 : atoi(params[C_ROTATION]);		strncpy(data->text, params[C_TEXT], sizeof(data->text));	{		gchar *text = strunescape(data->text);		g_snprintf(data->text, sizeof(data->text), "%s", text);		g_free(text);	}	strncpy(font_family, params[C_FONT_FAMILY], sizeof(font_family));		/* older GDT < 0.8 formats don't have font style */	strncpy(font_style, (GDT_MAGIC_REV(gdtparams) < 8 ?		"" : params[C_FONT_STYLE]), sizeof(font_style));		/* older GDT < 0.9 formats don't have line spacing */	data->line_spacing = GDT_MAGIC_REV(gdtparams) < 9 ?		0 : atoi(params[C_SPACING]);	/* GDT <= 0.9 doesn't have layer alignment */	data->layer_alignment	= LA_NONE;	g_snprintf(data->xlfd, sizeof(data->xlfd),		font_metric == FONT_METRIC_PIXELS ?		"-*-%s-%s-*-%d-*-*-*-*-*-*-*" :		"-*-%s-%s-*-*-%d-*-*-*-*-*-*",		font_family, font_style,		font_metric == FONT_METRIC_PIXELS ? font_size : font_size * 10);	if (GDT_MAGIC_REV(gdtparams) < GDT_MAGIC_REV(GDYNTEXT_MAGIC)) {		data->messages = g_list_append(data->messages,			_(" Upgrading old GDynText layer to "GDYNTEXT_MAGIC"."));	}	#ifdef DEBUG	printf("gdt_compat_load:\n  '%s'\n  '%s'\n", gdtparams, data->xlfd);#endif		g_free(gdtparams);	return TRUE;}/* vim: set ts=2 sw=2 tw=79 ai nowrap: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -