Fixed to use multiple compilation instead of one giant .c file with several

included .h files.  Ick.  See ChangeLog.

--klm
This commit is contained in:
Kelly Martin
1999-09-09 02:51:57 +00:00
parent 181c66985a
commit bceecbafe2
13 changed files with 3823 additions and 3610 deletions

View File

@ -1,3 +1,16 @@
1999-09-08 Kelly Lynn Martin <kelly@gimp.org>
* plug-ins/FractalExplorer/FractalExplorer.[ch]
plug-ins/FractalExplorer/Globals.c
plug-ins/FractalExplorer/Languages.[ch]
plug-ins/FractalExplorer/Events.[ch]
plug-ins/FractalExplorer/Callbacks.[ch]
plug-ins/FractalExplorer/Dialogs.[ch]
plug-ins/FractalExplorer/Makefile.am: fixed so that the code
wasn't one giant .c file with several included .h files
containing function definitions (eek!). Done in preparation for
modifying to allow a colormap larger than 256 colors.
Thu Sep 9 03:45:39 MEST 1999 Sven Neumann <sven@gimp.org>
* app/airbrush.c

View File

@ -0,0 +1,371 @@
#include "FractalExplorer.h"
#include "Callbacks.h"
#include "Dialogs.h"
#include <stdlib.h>
/**********************************************************************
FUNCTION: dialog_close_callback
*********************************************************************/
void
dialog_close_callback(GtkWidget * widget, gpointer data)
{
gtk_main_quit();
} /* dialog_close_callback */
/**********************************************************************
FUNCTION: dialog_save_callback
*********************************************************************/
void
dialog_save_callback(GtkWidget * widget, gpointer data)
{
create_file_selection();
} /* dialog_save_callback */
/**********************************************************************
FUNCTION: dialog_savelanguage_callback
*********************************************************************/
void
dialog_savelanguage_callback(GtkWidget * widget, gpointer data)
{
FILE * fp;
char * filname;
filname = g_strconcat (gimp_directory (),
G_DIR_SEPARATOR_S,
"fractalexplorerrc",
NULL);
lng=wvals.language;
fp = fopen (filname, "w");
if (fp) {
if (lng==0) fputs("FX-LANG:En\n",fp);
if (lng==1) fputs("FX-LANG:Fr\n",fp);
if (lng==2) fputs("FX-LANG:De\n",fp);
fclose(fp);
}
g_free (filename);
} /* dialog_savelanguage_callback */
/**********************************************************************
FUNCTION: load_button_press
*********************************************************************/
void
load_button_press(GtkWidget * widget,
gpointer data)
{
create_load_file_selection();
}
/**********************************************************************
FUNCTION: dialog_ok_callback
*********************************************************************/
void
dialog_ok_callback(GtkWidget * widget, gpointer data)
{
wint.run = TRUE;
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_ok_callback */
/**********************************************************************
FUNCTION: dialog_reset_callback
*********************************************************************/
void
dialog_reset_callback(GtkWidget * widget, gpointer data)
{
wvals.xmin = standardvals.xmin;
wvals.xmax = standardvals.xmax;
wvals.ymin = standardvals.ymin;
wvals.ymax = standardvals.ymax;
wvals.iter = standardvals.iter;
wvals.cx = standardvals.cx;
wvals.cy = standardvals.cy;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_redraw_callback
*********************************************************************/
void
dialog_redraw_callback(GtkWidget * widget, gpointer data)
{
int alwaysprev = wvals.alwayspreview;
wvals.alwayspreview = TRUE;
set_cmap_preview();
dialog_update_preview();
wvals.alwayspreview = alwaysprev;
}
/**********************************************************************
FUNCTION: dialog_cancel_callback
*********************************************************************/
void
dialog_cancel_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_cancel_callback */
/**********************************************************************
FUNCTION: dialog_undo_zoom_callback
*********************************************************************/
void
dialog_undo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex > 1) {
zooms[zoomindex] = wvals;
zoomindex--;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_undo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_redo_zoom_callback
*********************************************************************/
void
dialog_redo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex < zoommax) {
zoomindex++;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_redo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_step_in_callback
*********************************************************************/
void
dialog_step_in_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin+=1.0/6.0*xdifferenz;
wvals.ymin+=1.0/6.0*ydifferenz;
wvals.xmax-=1.0/6.0*xdifferenz;
wvals.ymax-=1.0/6.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_in_callback */
/**********************************************************************
FUNCTION: dialog_step_out_callback
*********************************************************************/
void
dialog_step_out_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin-=1.0/4.0*xdifferenz;
wvals.ymin-=1.0/4.0*ydifferenz;
wvals.xmax+=1.0/4.0*xdifferenz;
wvals.ymax+=1.0/4.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_out_callback */
/**********************************************************************
FUNCTION: explorer_logo_ok_callback
*********************************************************************/
void
explorer_logo_ok_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, TRUE);
gtk_widget_destroy(logodlg);
}
/**********************************************************************
FUNCTION: explorer_about_callback
*********************************************************************/
void
explorer_about_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, FALSE);
explorer_logo_dialog();
}
/**********************************************************************
FUNCTION: explorer_toggle_update
*********************************************************************/
void
explorer_toggle_update(GtkWidget * widget,
gpointer data)
{
int *toggle_val;
toggle_val = (int *) data;
if (GTK_TOGGLE_BUTTON(widget)->active)
*toggle_val = TRUE;
else
*toggle_val = FALSE;
if (do_redsinus)
wvals.redmode = SINUS;
else if (do_redcosinus)
wvals.redmode = COSINUS;
else if (do_rednone)
wvals.redmode = NONE;
if (do_greensinus)
wvals.greenmode = SINUS;
else if (do_greencosinus)
wvals.greenmode = COSINUS;
else if (do_greennone)
wvals.greenmode = NONE;
if (do_bluesinus)
wvals.bluemode = SINUS;
else if (do_bluecosinus)
wvals.bluemode = COSINUS;
else if (do_bluenone)
wvals.bluemode = NONE;
if (do_colormode1)
wvals.colormode = 0;
else if (do_colormode2)
wvals.colormode = 1;
if (do_english)
wvals.language = 0;
else if (do_french)
wvals.language = 1;
else if (do_german)
wvals.language = 2;
if (do_type0)
wvals.fractaltype = 0;
else if (do_type1)
wvals.fractaltype = 1;
else if (do_type2)
wvals.fractaltype = 2;
else if (do_type3)
wvals.fractaltype = 3;
else if (do_type4)
wvals.fractaltype = 4;
else if (do_type5)
wvals.fractaltype = 5;
else if (do_type6)
wvals.fractaltype = 6;
else if (do_type7)
wvals.fractaltype = 7;
else if (do_type8)
wvals.fractaltype = 8;
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_scale_update
*********************************************************************/
void
dialog_scale_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[MAXSTRLEN];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%0.15f", *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
dialog_update_preview();
}
} /* dialog_scale_update */
/**********************************************************************
FUNCTION: dialog_scale_int_update
*********************************************************************/
void
dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[MAXSTRLEN];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%i", (int) *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_scale_int_update */
/**********************************************************************
FUNCTION: dialog_entry_update
*********************************************************************/
void
dialog_entry_update(GtkWidget * widget, gdouble * value)
{
GtkAdjustment *adjustment;
gdouble new_value;
new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (*value != new_value) {
adjustment = gtk_object_get_user_data(GTK_OBJECT(widget));
if ((new_value >= adjustment->lower) &&
(new_value <= adjustment->upper)) {
*value = new_value;
adjustment->value = new_value;
gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed");
dialog_update_preview();
}
}
} /* dialog_entry_update */

View File

@ -1,366 +1,26 @@
/**********************************************************************
FUNCTION: dialog_close_callback
*********************************************************************/
#ifndef __FRACTALEXPLORER_CALLBACKS_H__
#define __FRACTALEXPLORER_CALLBACKS_H__
void
dialog_close_callback(GtkWidget * widget, gpointer data)
{
gtk_main_quit();
} /* dialog_close_callback */
#include "gtk/gtk.h"
/**********************************************************************
FUNCTION: dialog_save_callback
*********************************************************************/
void dialog_close_callback(GtkWidget * widget, gpointer data);
void dialog_save_callback(GtkWidget * widget, gpointer data);
void dialog_savelanguage_callback(GtkWidget * widget, gpointer data);
void load_button_press(GtkWidget * widget, gpointer data);
void dialog_ok_callback(GtkWidget * widget, gpointer data);
void dialog_reset_callback(GtkWidget * widget, gpointer data);
void dialog_redraw_callback(GtkWidget * widget, gpointer data);
void dialog_cancel_callback(GtkWidget * widget, gpointer data);
void dialog_undo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_redo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_step_in_callback(GtkWidget * widget, gpointer data);
void dialog_step_out_callback(GtkWidget * widget, gpointer data);
void explorer_logo_ok_callback(GtkWidget * widget, gpointer data);
void explorer_about_callback(GtkWidget * widget, gpointer data);
void explorer_toggle_update(GtkWidget * widget, gpointer data);
void dialog_scale_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_entry_update(GtkWidget * widget, gdouble * value);
void
dialog_save_callback(GtkWidget * widget, gpointer data)
{
create_file_selection();
} /* dialog_save_callback */
#endif
/**********************************************************************
FUNCTION: dialog_savelanguage_callback
*********************************************************************/
void
dialog_savelanguage_callback(GtkWidget * widget, gpointer data)
{
FILE * fp;
char * filname;
filname = g_strconcat (gimp_directory (),
G_DIR_SEPARATOR_S,
"fractalexplorerrc",
NULL);
lng=wvals.language;
fp = fopen (filname, "w");
if (fp) {
if (lng==0) fputs("FX-LANG:En\n",fp);
if (lng==1) fputs("FX-LANG:Fr\n",fp);
if (lng==2) fputs("FX-LANG:De\n",fp);
fclose(fp);
}
g_free (filename);
} /* dialog_savelanguage_callback */
/**********************************************************************
FUNCTION: load_button_press
*********************************************************************/
void
load_button_press(GtkWidget * widget,
gpointer data)
{
create_load_file_selection();
}
/**********************************************************************
FUNCTION: dialog_ok_callback
*********************************************************************/
void
dialog_ok_callback(GtkWidget * widget, gpointer data)
{
wint.run = TRUE;
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_ok_callback */
/**********************************************************************
FUNCTION: dialog_reset_callback
*********************************************************************/
void
dialog_reset_callback(GtkWidget * widget, gpointer data)
{
wvals.xmin = standardvals.xmin;
wvals.xmax = standardvals.xmax;
wvals.ymin = standardvals.ymin;
wvals.ymax = standardvals.ymax;
wvals.iter = standardvals.iter;
wvals.cx = standardvals.cx;
wvals.cy = standardvals.cy;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_redraw_callback
*********************************************************************/
void
dialog_redraw_callback(GtkWidget * widget, gpointer data)
{
int alwaysprev = wvals.alwayspreview;
wvals.alwayspreview = TRUE;
set_cmap_preview();
dialog_update_preview();
wvals.alwayspreview = alwaysprev;
}
/**********************************************************************
FUNCTION: dialog_cancel_callback
*********************************************************************/
void
dialog_cancel_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_destroy(GTK_WIDGET(data));
} /* dialog_cancel_callback */
/**********************************************************************
FUNCTION: dialog_undo_zoom_callback
*********************************************************************/
void
dialog_undo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex > 1) {
zooms[zoomindex] = wvals;
zoomindex--;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_undo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_redo_zoom_callback
*********************************************************************/
void
dialog_redo_zoom_callback(GtkWidget * widget, gpointer data)
{
if (zoomindex < zoommax) {
zoomindex++;
wvals = zooms[zoomindex];
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_redo_zoom_callback */
/**********************************************************************
FUNCTION: dialog_step_in_callback
*********************************************************************/
void
dialog_step_in_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin+=1.0/6.0*xdifferenz;
wvals.ymin+=1.0/6.0*ydifferenz;
wvals.xmax-=1.0/6.0*xdifferenz;
wvals.ymax-=1.0/6.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_in_callback */
/**********************************************************************
FUNCTION: dialog_step_out_callback
*********************************************************************/
void
dialog_step_out_callback(GtkWidget * widget, gpointer data)
{
double xdifferenz;
double ydifferenz;
if (zoomindex < zoommax) {
zooms[zoomindex]=wvals;
zoomindex++;
}
xdifferenz=wvals.xmax-wvals.xmin;
ydifferenz=wvals.ymax-wvals.ymin;
wvals.xmin-=1.0/4.0*xdifferenz;
wvals.ymin-=1.0/4.0*ydifferenz;
wvals.xmax+=1.0/4.0*xdifferenz;
wvals.ymax+=1.0/4.0*ydifferenz;
zooms[zoomindex]=wvals;
dialog_change_scale();
set_cmap_preview();
dialog_update_preview();
} /* dialog_step_out_callback */
/**********************************************************************
FUNCTION: explorer_logo_ok_callback
*********************************************************************/
void
explorer_logo_ok_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, TRUE);
gtk_widget_destroy(logodlg);
}
/**********************************************************************
FUNCTION: explorer_about_callback
*********************************************************************/
void
explorer_about_callback(GtkWidget * widget, gpointer data)
{
gtk_widget_set_sensitive(maindlg, FALSE);
explorer_logo_dialog();
}
/**********************************************************************
FUNCTION: explorer_toggle_update
*********************************************************************/
void
explorer_toggle_update(GtkWidget * widget,
gpointer data)
{
int *toggle_val;
toggle_val = (int *) data;
if (GTK_TOGGLE_BUTTON(widget)->active)
*toggle_val = TRUE;
else
*toggle_val = FALSE;
if (do_redsinus)
wvals.redmode = SINUS;
else if (do_redcosinus)
wvals.redmode = COSINUS;
else if (do_rednone)
wvals.redmode = NONE;
if (do_greensinus)
wvals.greenmode = SINUS;
else if (do_greencosinus)
wvals.greenmode = COSINUS;
else if (do_greennone)
wvals.greenmode = NONE;
if (do_bluesinus)
wvals.bluemode = SINUS;
else if (do_bluecosinus)
wvals.bluemode = COSINUS;
else if (do_bluenone)
wvals.bluemode = NONE;
if (do_colormode1)
wvals.colormode = 0;
else if (do_colormode2)
wvals.colormode = 1;
if (do_english)
wvals.language = 0;
else if (do_french)
wvals.language = 1;
else if (do_german)
wvals.language = 2;
if (do_type0)
wvals.fractaltype = 0;
else if (do_type1)
wvals.fractaltype = 1;
else if (do_type2)
wvals.fractaltype = 2;
else if (do_type3)
wvals.fractaltype = 3;
else if (do_type4)
wvals.fractaltype = 4;
else if (do_type5)
wvals.fractaltype = 5;
else if (do_type6)
wvals.fractaltype = 6;
else if (do_type7)
wvals.fractaltype = 7;
else if (do_type8)
wvals.fractaltype = 8;
set_cmap_preview();
dialog_update_preview();
}
/**********************************************************************
FUNCTION: dialog_scale_update
*********************************************************************/
void
dialog_scale_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[256];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%0.15f", *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
dialog_update_preview();
}
} /* dialog_scale_update */
/**********************************************************************
FUNCTION: dialog_scale_int_update
*********************************************************************/
void
dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value)
{
GtkWidget *entry;
char buf[256];
if (*value != adjustment->value) {
*value = adjustment->value;
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
sprintf(buf, "%i", (int) *value);
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
gtk_entry_set_text(GTK_ENTRY(entry), buf);
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
set_cmap_preview();
dialog_update_preview();
}
} /* dialog_scale_int_update */
/**********************************************************************
FUNCTION: dialog_entry_update
*********************************************************************/
void
dialog_entry_update(GtkWidget * widget, gdouble * value)
{
GtkAdjustment *adjustment;
gdouble new_value;
new_value = atof(gtk_entry_get_text(GTK_ENTRY(widget)));
if (*value != new_value) {
adjustment = gtk_object_get_user_data(GTK_OBJECT(widget));
if ((new_value >= adjustment->lower) &&
(new_value <= adjustment->upper)) {
*value = new_value;
adjustment->value = new_value;
gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed");
dialog_update_preview();
}
}
} /* dialog_entry_update */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,307 @@
#include "FractalExplorer.h"
#include "Events.h"
#include "Dialogs.h"
/**********************************************************************
FUNCTION: preview_button_press_event
*********************************************************************/
gint
preview_button_press_event(GtkWidget * widget, GdkEventButton * event)
{
double left,
right,
bottom,
top,
dx,
dy;
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
if (event->button == 1) {
x_press = event->x;
y_press = event->y;
left = sel_x1;
right = sel_x2 - 1;
bottom = sel_y2 - 1;
top = sel_y1;
dx = (right - left) / (preview_width - 1);
dy = (bottom - top) / (preview_height - 1);
xbild = preview_width;
ybild = preview_height;
xdiff = (xmax - xmin) / xbild;
ydiff = (ymax - ymin) / ybild;
py = y_press;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) x_press);
px = x_press;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
}
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_motion_notify_event
*********************************************************************/
gint
preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = xpos = event->x;
oldypos = ypos = event->y;
if ((xpos >= 0.0) && (ypos >= 0.0)
&& (xpos < preview_width) && (ypos < preview_height)) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
} else {
oldypos = -1;
oldxpos = -1;
}
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_leave_notify_event
*********************************************************************/
gint
preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = -1;
oldypos = -1;
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
MyCursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_enter_notify_event
*********************************************************************/
gint
preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event)
{
MyCursor = gdk_cursor_new(GDK_TCROSS);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_button_release_event
*********************************************************************/
gint
preview_button_release_event(GtkWidget * widget, GdkEventButton * event)
{
double l_xmin,
l_xmax,
l_ymin,
l_ymax;
if (event->button == 1) {
x_release = event->x;
y_release = event->y;
if ((x_press >= 0.0) && (y_press >= 0.0)
&& (x_release >= 0.0) && (y_release >= 0.0)
&& (x_press < preview_width) && (y_press < preview_height)
&& (x_release < preview_width) && (y_release < preview_height)) {
l_xmin = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_press / preview_width);
l_xmax = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_release / preview_width);
l_ymin = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_press / preview_height);
l_ymax = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_release / preview_height);
zooms[zoomindex] = wvals;
zoomindex++;
if (zoomindex > 99)
zoomindex = 99;
zoommax = zoomindex;
wvals.xmin = l_xmin;
wvals.xmax = l_xmax;
wvals.ymin = l_ymin;
wvals.ymax = l_ymax;
dialog_change_scale();
dialog_update_preview();
oldypos = oldxpos = -1;
}
}
return (TRUE);
}

View File

@ -1,304 +1,13 @@
#ifndef __FRACTALEXPLORER_EVENTS_H__
#define __FRACTALEXPLORER_EVENTS_H__
/**********************************************************************
FUNCTION: preview_button_press_event
*********************************************************************/
gint
preview_button_press_event(GtkWidget * widget, GdkEventButton * event)
{
double left,
right,
bottom,
top,
dx,
dy;
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
/* Preview events */
gint preview_button_press_event(GtkWidget * widget, GdkEventButton * event);
gint preview_button_release_event(GtkWidget * widget, GdkEventButton * event);
gint preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event);
if (event->button == 1) {
x_press = event->x;
y_press = event->y;
left = sel_x1;
right = sel_x2 - 1;
bottom = sel_y2 - 1;
top = sel_y1;
dx = (right - left) / (preview_width - 1);
dy = (bottom - top) / (preview_height - 1);
xbild = preview_width;
ybild = preview_height;
xdiff = (xmax - xmin) / xbild;
ydiff = (ymax - ymin) / ybild;
#endif
py = y_press;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) x_press);
px = x_press;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
}
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_motion_notify_event
*********************************************************************/
gint
preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = xpos = event->x;
oldypos = ypos = event->y;
if ((xpos >= 0.0) && (ypos >= 0.0)
&& (xpos < preview_width) && (ypos < preview_height)) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
} else {
oldypos = -1;
oldxpos = -1;
}
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_leave_notify_event
*********************************************************************/
gint
preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event)
{
int px,
py,
x,
y;
unsigned short r,
g,
b;
guchar *p_ul,
*i,
*p;
ypos = oldypos;
xpos = oldxpos;
if (oldypos != -1) {
py = ypos;
px = 0;
p_ul = wint.wimage + 3 * (preview_width * py + 0);
for (x = 0; x < preview_width; x++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3;
px += 1;
}
py = 0;
p_ul = wint.wimage + 3 * (preview_width * 0 + (int) xpos);
px = xpos;
for (y = 0; y < preview_height; y++) {
i = wint.wimage + 3 * (preview_width * py + px);
r = (*i++) ^ 254;
g = (*i++) ^ 254;
b = (*i) ^ 254;
p_ul[0] = r;
p_ul[1] = g;
p_ul[2] = b;
p_ul += 3 * (preview_width);
py += 1;
} /* for */
}
oldxpos = -1;
oldypos = -1;
p = wint.wimage;
for (y = 0; y < preview_height; y++) {
gtk_preview_draw_row(GTK_PREVIEW(wint.preview), p, 0, y, preview_width);
p += preview_width * 3;
} /* for */
gtk_widget_draw(wint.preview, NULL);
gdk_flush();
MyCursor = gdk_cursor_new(GDK_TOP_LEFT_ARROW);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_enter_notify_event
*********************************************************************/
gint
preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event)
{
MyCursor = gdk_cursor_new(GDK_TCROSS);
gdk_window_set_cursor(maindlg->window, MyCursor);
return (TRUE);
}
/**********************************************************************
FUNCTION: preview_button_release_event
*********************************************************************/
gint
preview_button_release_event(GtkWidget * widget, GdkEventButton * event)
{
double l_xmin,
l_xmax,
l_ymin,
l_ymax;
if (event->button == 1) {
x_release = event->x;
y_release = event->y;
if ((x_press >= 0.0) && (y_press >= 0.0)
&& (x_release >= 0.0) && (y_release >= 0.0)
&& (x_press < preview_width) && (y_press < preview_height)
&& (x_release < preview_width) && (y_release < preview_height)) {
l_xmin = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_press / preview_width);
l_xmax = wvals.xmin + (wvals.xmax - wvals.xmin) * (x_release / preview_width);
l_ymin = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_press / preview_height);
l_ymax = wvals.ymin + (wvals.ymax - wvals.ymin) * (y_release / preview_height);
zooms[zoomindex] = wvals;
zoomindex++;
if (zoomindex > 99)
zoomindex = 99;
zoommax = zoomindex;
wvals.xmin = l_xmin;
wvals.xmax = l_xmax;
wvals.ymin = l_ymin;
wvals.ymax = l_ymax;
dialog_change_scale();
dialog_update_preview();
oldypos = oldxpos = -1;
}
}
return (TRUE);
}

View File

@ -77,7 +77,6 @@
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
#include "logo.h"
#include "pix_data.h"
#include "Languages.h"
@ -96,7 +95,7 @@ MAIN()
FUNCTION: query
*********************************************************************/
static void
void
query()
{
static GParamDef args[] =
@ -144,7 +143,7 @@ query()
FUNCTION: run
*********************************************************************/
static void
void
run(char *name,
int nparams,
GParam * param,
@ -551,7 +550,7 @@ explorer_render_row(const guchar * src_row,
/*
static gint
gint
rename_button_press(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -569,7 +568,7 @@ rename_button_press(GtkWidget *widget,
}
*/
static gint
gint
delete_button_press_cancel(GtkWidget *widget,
gpointer data)
{
@ -580,7 +579,7 @@ delete_button_press_cancel(GtkWidget *widget,
return(FALSE);
}
static gint
gint
fractalexplorer_delete_fractalexplorer_callback(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -670,7 +669,7 @@ fractalexplorer_save(void)
}
static gint
gint
gradient_list_button_press(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -712,7 +711,7 @@ gradient_list_button_press(GtkWidget *widget,
get_line(load_buf,MAX_LOAD_LINE,fp,1);
if(strncmp(fractalexplorer_HEADER,load_buf,strlen(load_buf)))
{
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,msg[lng][MSG_WRONGFILETYPE],sel_obj->filename);
create_warn_dialog(err);
return(0);
@ -720,7 +719,7 @@ gradient_list_button_press(GtkWidget *widget,
if(gradient_load_options(sel_obj,fp))
{
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,msg[lng][MSG_CORRUPTFILE],
filename,
line_no);
@ -745,7 +744,7 @@ gradient_list_button_press(GtkWidget *widget,
}
static void
void
fractalexplorer_list_ok_callback (GtkWidget *w,
gpointer client_data)
{
@ -781,7 +780,7 @@ fractalexplorer_list_ok_callback (GtkWidget *w,
}
static void
void
fractalexplorer_list_cancel_callback (GtkWidget *w,
gpointer client_data)
{
@ -799,7 +798,7 @@ fractalexplorer_list_cancel_callback (GtkWidget *w,
}
static void
void
fractalexplorer_dialog_edit_list (GtkWidget *lwidget,fractalexplorerOBJ *obj,gint created)
{
fractalexplorerListOptions *options;
@ -859,7 +858,7 @@ fractalexplorer_dialog_edit_list (GtkWidget *lwidget,fractalexplorerOBJ *obj,gin
}
static GtkWidget *
GtkWidget *
new_fractalexplorer_obj(gchar * name)
{
fractalexplorerOBJ * fractalexplorer;
@ -887,7 +886,7 @@ new_fractalexplorer_obj(gchar * name)
}
static gint
gint
new_button_press(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -900,7 +899,7 @@ new_button_press(GtkWidget *widget,
return(FALSE);
}
static void
void
fractalexplorer_rescan_cancel_callback (GtkWidget *w,
gpointer client_data)
{
@ -1085,7 +1084,7 @@ fractalexplorer_new_pixmap(GtkWidget *list, char **pixdata)
}
static GtkWidget *
GtkWidget *
fractalexplorer_list_add(fractalexplorerOBJ *obj)
{
GList *list;
@ -1208,7 +1207,7 @@ gradient_build_list_items(GtkWidget *list)
/*
static void
void
fractalexplorer_save_menu_callback(GtkWidget *widget, gpointer data)
{
fractalexplorerOBJ * real_current = current_obj;
@ -1220,7 +1219,7 @@ fractalexplorer_save_menu_callback(GtkWidget *widget, gpointer data)
current_obj = real_current;
}
static void
void
fractalexplorer_load_menu_callback(GtkWidget *widget, gpointer data)
{
dialog_change_scale();
@ -1228,13 +1227,13 @@ fractalexplorer_load_menu_callback(GtkWidget *widget, gpointer data)
dialog_update_preview();
}
static void
void
fractalexplorer_rename_menu_callback(GtkWidget *widget, gpointer data)
{
create_file_selection(fractalexplorer_obj_for_menu,fractalexplorer_obj_for_menu->filename);
}
static void
void
fractalexplorer_copy_menu_callback(GtkWidget *widget, gpointer data)
{
gchar *new_name = g_strup_printf(msg[lng][MSG_COPYNAME],fractalexplorer_obj_for_menu->draw_name);
@ -1252,7 +1251,7 @@ fractalexplorer_copy_menu_callback(GtkWidget *widget, gpointer data)
/*
static void
void
fractalexplorer_op_menu_create(GtkWidget *window)
{
GtkWidget *menu_item;
@ -1310,7 +1309,7 @@ fractalexplorer_op_menu_create(GtkWidget *window)
}
static void
void
fractalexplorer_op_menu_popup(gint button, guint32 activate_time,fractalexplorerOBJ *obj)
{
fractalexplorer_obj_for_menu = obj;
@ -1329,7 +1328,7 @@ fractalexplorer_op_menu_popup(gint button, guint32 activate_time,fractalexplorer
*/
static gint
gint
list_button_press(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -1391,7 +1390,7 @@ plug_in_parse_fractalexplorer_path()
gchar *token;
struct stat filestat;
gint err;
gchar buf[256];
gchar buf[MAXSTRLEN];
if(fractalexplorer_path_list)
g_list_free(fractalexplorer_path_list);
@ -1584,7 +1583,7 @@ fractalexplorer_load (gchar *filename, gchar *name)
if(strncmp(fractalexplorer_HEADER,load_buf,strlen(load_buf)))
{
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,msg[lng][MSG_WRONGFILETYPE],fractalexplorer->filename);
create_warn_dialog(err);
fclose(fp);
@ -1594,7 +1593,7 @@ fractalexplorer_load (gchar *filename, gchar *name)
if(load_options(fractalexplorer,fp))
{
/* waste some mem */
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,
msg[lng][MSG_CORRUPTFILE],
filename,
@ -1648,7 +1647,7 @@ gradient_load (gchar *filename, gchar *name)
if(strncmp(fractalexplorer_HEADER,load_buf,strlen(load_buf)))
{
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,msg[lng][MSG_WRONGFILETYPE],gradi->filename);
create_warn_dialog(err);
return(NULL);
@ -1657,7 +1656,7 @@ gradient_load (gchar *filename, gchar *name)
/*
if(gradient_load_options(gradient,fp))
{
gchar err[256];
gchar err[MAXSTRLEN];
sprintf(err,
msg[lng][MSG_CORRUPTFILE],
filename,
@ -1676,7 +1675,7 @@ gradient_load (gchar *filename, gchar *name)
return(gradi);
}
static void
void
fractalexplorer_rescan_file_selection_ok(GtkWidget *w,
GtkFileSelection *fs,
gpointer data)
@ -1850,7 +1849,7 @@ gradient_list_load_all(GList *plist)
}
static GtkWidget *
GtkWidget *
add_objects_list ()
{
GtkWidget *table;
@ -1942,7 +1941,7 @@ add_objects_list ()
static GtkWidget *
GtkWidget *
add_gradients_list ()
{
GtkWidget *table;
@ -2009,7 +2008,7 @@ add_gradients_list ()
static void
void
fractalexplorer_rescan_ok_callback (GtkWidget *w,
gpointer client_data)
{
@ -2034,7 +2033,7 @@ fractalexplorer_rescan_ok_callback (GtkWidget *w,
}
static void
void
fractalexplorer_rescan_add_entry_callback (GtkWidget *w,
gpointer client_data)
{
@ -2061,7 +2060,7 @@ fractalexplorer_rescan_add_entry_callback (GtkWidget *w,
}
static void
void
fractalexplorer_rescan_list (void)
{
GtkWidget *vbox;
@ -2157,7 +2156,7 @@ fractalexplorer_rescan_list (void)
}
static gint
gint
rescan_button_press(GtkWidget *widget,
GdkEventButton *event,
gpointer data)
@ -2167,7 +2166,7 @@ rescan_button_press(GtkWidget *widget,
}
static gint
gint
delete_button_press_ok(GtkWidget *widget,
gpointer data)
{

View File

@ -1,3 +1,11 @@
#ifndef __FRACTALEXPLORER_H__
#define __FRACTALEXPLORER_H__
#include "config.h"
#include <glib.h>
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
/**********************************************************************
Magic numbers
*********************************************************************/
@ -8,6 +16,9 @@
#define MAX_LOAD_LINE 256
#define GR_WIDTH 325
#define NCOLORS 256
#define MAXSTRLEN 256
#define SINUS 0
#define COSINUS 1
#define NONE 2
@ -49,7 +60,9 @@ typedef struct {
gint run;
} explorer_interface_t;
typedef int clrmap[256][3];
typedef int colorvalue[3];
typedef colorvalue clrmap[NCOLORS];
typedef struct {
GtkWidget *text;
@ -134,19 +147,17 @@ typedef struct _fractalexplorerListOptions {
#define gradient_GRADIENTEDITOR 0x2
static fractalexplorerOBJ *current_obj;
static fractalexplorerOBJ *pic_obj;
static GtkWidget *delete_dialog = NULL;
extern fractalexplorerOBJ *current_obj;
extern fractalexplorerOBJ *pic_obj;
extern GtkWidget *delete_dialog;
/**********************************************************************
Declare local functions
*********************************************************************/
/* Gimp interface functions */
static void query(void);
static void run(char *name, int nparams, GParam * param, int *nreturn_vals,
void query(void);
void run(char *name, int nparams, GParam * param, int *nreturn_vals,
GParam ** return_vals);
/* Dialog and fractal functions */
@ -154,204 +165,148 @@ void explorer(GDrawable * drawable);
void explorer_render_row(const guchar * src_row, guchar * dest_row, gint row,
gint row_width, gint bytes);
void transform(short int *, short int *, short int *, double, double, double);
gint explorer_dialog(void);
void dialog_update_preview(void);
/* Functions for dialog widgets */
void dialog_create_value(char *title, GtkTable * table, int row, gdouble * value,
int left, int right, const char *desc, scaledata * scalevalues);
void dialog_scale_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_create_int_value(char *title, GtkTable * table, int row, gdouble * value,
int left, int right, const char *desc, scaledata * scalevalues);
void dialog_scale_int_update(GtkAdjustment * adjustment, gdouble * value);
void dialog_entry_update(GtkWidget * widget, gdouble * value);
void dialog_close_callback(GtkWidget * widget, gpointer data);
void dialog_ok_callback(GtkWidget * widget, gpointer data);
void dialog_cancel_callback(GtkWidget * widget, gpointer data);
void dialog_step_out_callback(GtkWidget * widget, gpointer data);
void dialog_step_in_callback(GtkWidget * widget, gpointer data);
void dialog_undo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_redo_zoom_callback(GtkWidget * widget, gpointer data);
void dialog_redraw_callback(GtkWidget * widget, gpointer data);
void dialog_reset_callback(GtkWidget * widget, gpointer data);
GtkWidget *explorer_logo_dialog();
GtkWidget *explorer_load_dialog();
void explorer_toggle_update(GtkWidget * widget, gpointer data);
void set_tooltip(GtkTooltips * tooltips, GtkWidget * widget, const char *desc);
void dialog_change_scale(void);
void set_cmap_preview(void);
void make_color_map(void);
void create_file_selection();
void create_load_file_selection();
void explorer_load();
void load_button_press(GtkWidget * widget, gpointer data);
/* Preview events */
gint preview_button_press_event(GtkWidget * widget, GdkEventButton * event);
gint preview_button_release_event(GtkWidget * widget, GdkEventButton * event);
gint preview_motion_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_leave_notify_event(GtkWidget * widget, GdkEventButton * event);
gint preview_enter_notify_event(GtkWidget * widget, GdkEventButton * event);
static gint list_button_press(GtkWidget *widget,GdkEventButton *event,gpointer data);
static gint new_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static gint fractalexplorer_delete_fractalexplorer_callback(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static gint delete_button_press_ok(GtkWidget *widget,gpointer data);
static gint rescan_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
static void fractalexplorer_list_ok_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_list_cancel_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_dialog_edit_list (GtkWidget *lwidget,fractalexplorerOBJ *obj,gint created);
static GtkWidget *new_fractalexplorer_obj(gchar * name);
static void fractalexplorer_rescan_cancel_callback (GtkWidget *w, gpointer client_data);
gint list_button_press(GtkWidget *widget,GdkEventButton *event,gpointer data);
gint new_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
gint fractalexplorer_delete_fractalexplorer_callback(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
gint delete_button_press_ok(GtkWidget *widget,gpointer data);
gint rescan_button_press(GtkWidget *widget,GdkEventButton *bevent,gpointer data);
void fractalexplorer_list_ok_callback (GtkWidget *w, gpointer client_data);
void fractalexplorer_list_cancel_callback (GtkWidget *w, gpointer client_data);
void fractalexplorer_dialog_edit_list (GtkWidget *lwidget,fractalexplorerOBJ *obj,gint created);
GtkWidget *new_fractalexplorer_obj(gchar * name);
void fractalexplorer_rescan_cancel_callback (GtkWidget *w, gpointer client_data);
void clear_list_items(GtkList *list);
gint fractalexplorer_list_pos(fractalexplorerOBJ *fractalexplorer);
gint fractalexplorer_list_insert (fractalexplorerOBJ *fractalexplorer);
GtkWidget* fractalexplorer_list_item_new_with_label_and_pixmap (fractalexplorerOBJ *obj, gchar *label, GtkWidget *pix_widget);
GtkWidget* fractalexplorer_new_pixmap(GtkWidget *list, char **pixdata);
static GtkWidget *fractalexplorer_list_add(fractalexplorerOBJ *obj);
GtkWidget *fractalexplorer_list_add(fractalexplorerOBJ *obj);
void list_button_update(fractalexplorerOBJ *obj);
fractalexplorerOBJ *fractalexplorer_new(void);
void build_list_items(GtkWidget *list);
/*
static void fractalexplorer_op_menu_popup(gint button, guint32 activate_time,fractalexplorerOBJ *obj);
*/
void plug_in_parse_fractalexplorer_path();
void fractalexplorer_free(fractalexplorerOBJ * fractalexplorer);
void fractalexplorer_free_everything(fractalexplorerOBJ * fractalexplorer);
void fractalexplorer_list_free_all ();
fractalexplorerOBJ *fractalexplorer_load (gchar *filename, gchar *name);
static void fractalexplorer_rescan_file_selection_ok(GtkWidget *w, GtkFileSelection *fs, gpointer data);
void fractalexplorer_rescan_file_selection_ok(GtkWidget *w, GtkFileSelection *fs, gpointer data);
void fractalexplorer_list_load_all(GList *plist);
static GtkWidget *add_objects_list ();
static GtkWidget *add_gradients_list ();
static void fractalexplorer_rescan_ok_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_rescan_add_entry_callback (GtkWidget *w, gpointer client_data);
static void fractalexplorer_rescan_list (void);
/*
static void fractalexplorer_op_menu_create(GtkWidget *window);
*/
GtkWidget *add_objects_list ();
GtkWidget *add_gradients_list ();
void fractalexplorer_rescan_ok_callback (GtkWidget *w, gpointer client_data);
void fractalexplorer_rescan_add_entry_callback (GtkWidget *w, gpointer client_data);
void fractalexplorer_rescan_list (void);
/**********************************************************************
Global variables
*********************************************************************/
double xmin = -2,
xmax = 1,
ymin = -1.5,
ymax = 1.5;
double xbild,
extern double xmin,
xmax,
ymin,
ymax;
extern double xbild,
ybild,
xdiff,
ydiff;
double x_press = -1.0,
y_press = -1.0;
double x_release = -1.0,
y_release = -1.0;
float cx = -0.75;
float cy = -0.2;
GDrawable *drawable;
gint tile_width,
extern double x_press,
y_press;
extern double x_release,
y_release;
extern float cx;
extern float cy;
extern GDrawable *drawable;
extern gint tile_width,
tile_height;
gint img_width,
extern gint img_width,
img_height,
img_bpp;
gint sel_x1,
extern gint sel_x1,
sel_y1,
sel_x2,
sel_y2;
gint sel_width,
extern gint sel_width,
sel_height;
gint preview_width,
extern gint preview_width,
preview_height;
GTile *the_tile = NULL;
double cen_x,
extern GTile *the_tile;
extern double cen_x,
cen_y;
double xpos,
extern double xpos,
ypos,
oldxpos = -1,
oldypos = -1;
gint do_redsinus,
oldxpos,
oldypos;
extern gint do_redsinus,
do_redcosinus,
do_rednone;
gint do_greensinus,
extern gint do_greensinus,
do_greencosinus,
do_greennone;
gint do_bluesinus,
extern gint do_bluesinus,
do_bluecosinus,
do_bluenone;
gint do_redinvert,
extern gint do_redinvert,
do_greeninvert,
do_blueinvert;
gint do_colormode1 = FALSE,
do_colormode2 = FALSE;
gint do_type0 = FALSE,
do_type1 = FALSE,
do_type2 = FALSE,
do_type3 = FALSE,
do_type4 = FALSE,
do_type5 = FALSE,
do_type6 = FALSE,
do_type7 = FALSE,
do_type8 = FALSE,
do_english = TRUE,
do_french = FALSE,
do_german = FALSE;
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkWidget *loaddlg;
GtkWidget *cmap_preview;
GtkWidget *cmap_preview_long;
GtkWidget *cmap_preview_long2;
GtkWidget *delete_frame_to_freeze;
GtkWidget *fractalexplorer_gtk_list;
GtkWidget *save_menu_item;
GtkWidget *fractalexplorer_op_menu;
GtkTooltips *tips;
GdkColor tips_fg,
extern gint do_colormode1,
do_colormode2;
extern gint do_type0,
do_type1,
do_type2,
do_type3,
do_type4,
do_type5,
do_type6,
do_type7,
do_type8,
do_english,
do_french,
do_german;
extern GtkWidget *maindlg;
extern GtkWidget *logodlg;
extern GtkWidget *loaddlg;
extern GtkWidget *cmap_preview;
extern GtkWidget *cmap_preview_long;
extern GtkWidget *cmap_preview_long2;
extern GtkWidget *delete_frame_to_freeze;
extern GtkWidget *fractalexplorer_gtk_list;
extern GtkWidget *save_menu_item;
extern GtkWidget *fractalexplorer_op_menu;
extern GtkTooltips *tips;
extern GdkColor tips_fg,
tips_bg;
GdkCursor *MyCursor;
int ready_now = FALSE;
explorer_vals_t zooms[100];
DialogElements *elements = NULL;
int zoomindex = 1;
int zoommax = 1;
gdouble *gg;
int line_no;
gchar *filename;
clrmap colormap;
GList *fractalexplorer_path_list = NULL;
GList *fractalexplorer_list = NULL;
GList *gradient_list = NULL;
gchar *tpath = NULL;
fractalexplorerOBJ *fractalexplorer_obj_for_menu;
static GList *rescan_list = NULL;
int lng=LNG_GERMAN;
extern GdkCursor *MyCursor;
extern int ready_now;
extern explorer_vals_t
zooms[100];
extern DialogElements
*elements;
extern int zoomindex;
extern int zoommax;
extern gdouble *gg;
extern int line_no;
extern gchar *filename;
extern clrmap colormap;
extern GList *fractalexplorer_path_list;
extern GList *fractalexplorer_list;
extern GList *gradient_list;
extern gchar *tpath;
extern fractalexplorerOBJ
*fractalexplorer_obj_for_menu;
extern GList *rescan_list;
extern int lng;
extern GPlugInInfo PLUG_IN_INFO;
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
extern explorer_interface_t wint;
explorer_interface_t wint =
{
NULL, /* preview */
NULL, /* wimage */
FALSE /* run */
}; /* wint */
extern explorer_vals_t wvals;
static explorer_vals_t wvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* wvals */
extern explorer_vals_t standardvals;
static explorer_vals_t standardvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* standardvals */
#endif

View File

@ -0,0 +1,129 @@
#include "FractalExplorer.h"
#include "Languages.h"
/**********************************************************************
Global variables
*********************************************************************/
double xmin = -2,
xmax = 1,
ymin = -1.5,
ymax = 1.5;
double xbild,
ybild,
xdiff,
ydiff;
double x_press = -1.0,
y_press = -1.0;
double x_release = -1.0,
y_release = -1.0;
float cx = -0.75;
float cy = -0.2;
GDrawable *drawable;
gint tile_width,
tile_height;
gint img_width,
img_height,
img_bpp;
gint sel_x1,
sel_y1,
sel_x2,
sel_y2;
gint sel_width,
sel_height;
gint preview_width,
preview_height;
GTile *the_tile = NULL;
double cen_x,
cen_y;
double xpos,
ypos,
oldxpos = -1,
oldypos = -1;
gint do_redsinus,
do_redcosinus,
do_rednone;
gint do_greensinus,
do_greencosinus,
do_greennone;
gint do_bluesinus,
do_bluecosinus,
do_bluenone;
gint do_redinvert,
do_greeninvert,
do_blueinvert;
gint do_colormode1 = FALSE,
do_colormode2 = FALSE;
gint do_type0 = FALSE,
do_type1 = FALSE,
do_type2 = FALSE,
do_type3 = FALSE,
do_type4 = FALSE,
do_type5 = FALSE,
do_type6 = FALSE,
do_type7 = FALSE,
do_type8 = FALSE,
do_english = TRUE,
do_french = FALSE,
do_german = FALSE;
GtkWidget *maindlg;
GtkWidget *logodlg;
GtkWidget *loaddlg;
GtkWidget *cmap_preview;
GtkWidget *cmap_preview_long;
GtkWidget *cmap_preview_long2;
GtkWidget *delete_frame_to_freeze;
GtkWidget *fractalexplorer_gtk_list;
GtkWidget *save_menu_item;
GtkWidget *fractalexplorer_op_menu;
GtkTooltips *tips;
GdkColor tips_fg,
tips_bg;
GdkCursor *MyCursor;
int ready_now = FALSE;
explorer_vals_t zooms[100];
DialogElements *elements = NULL;
int zoomindex = 1;
int zoommax = 1;
gdouble *gg;
int line_no;
gchar *filename;
clrmap colormap;
GList *fractalexplorer_path_list = NULL;
GList *fractalexplorer_list = NULL;
GList *gradient_list = NULL;
gchar *tpath = NULL;
fractalexplorerOBJ *fractalexplorer_obj_for_menu;
GList *rescan_list = NULL;
int lng=LNG_GERMAN;
GPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
NULL, /* quit_proc */
query, /* query_proc */
run, /* run_proc */
};
explorer_interface_t wint =
{
NULL, /* preview */
NULL, /* wimage */
FALSE /* run */
}; /* wint */
explorer_vals_t wvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* wvals */
explorer_vals_t standardvals =
{
0, -2.0, 2.0, -1.5, 1.5, 50.0, -0.75, -0.2, 0, 128.0, 128.0, 128.0, 1, 1, 0, 0, 0, 0, 1, 0,
}; /* standardvals */
fractalexplorerOBJ *current_obj;
fractalexplorerOBJ *pic_obj;
GtkWidget *delete_dialog = NULL;

View File

@ -0,0 +1,454 @@
#include "Languages.h"
char * msg[4][104] =
{
/* English messages */
{
"OK",
"Cancel",
"Delete fractal",
"Are you sure you want to delete",
"\"%s\" from the list and from disk?",
"Delete",
"Error opening: %s",
"File '%s' Not a FractalExplorer file",
"File '%s' corrupt file - Line %d Option section incorrect",
"Internal error - list item has null object!",
"Unknown event\n",
"Edit fractal name",
"Fractal name:",
"New fractal",
"%s [copy]",
"Save",
"Save as...",
"Copy",
"Load",
"No fractalexplorer-path in gimprc:\n"
"You need to add an entry like\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"to your ~/.gimprc/gimprc file\n",
"fractalexplorer-path miss-configured - \nPath `%.100s' not found\n",
"Entry %.100s is not a directory\n",
"error reading fractalexplorer directory \"%s\"",
"My first fractal",
"Choose fractal by double-clicking on it",
"Rescan",
"Select directory and rescan collection",
"New",
"Create a new fractal for editing",
"Rename",
"Rename fractal in list",
"Delete currently selected fractal",
"Choose gradient by double-clicking on it",
"Add FractalExplorer path",
"Rescan for fractals",
"Add dir",
"Parameters",
"Parameters",
"Change the first (minimal) x-coordinate delimitation",
"Change the second (maximal) x-coordinate delimitation",
"Change the first (minimal) y-coordinate delimitation",
"Change the second (maximal) y-coordinate delimitation",
"Change the iteration value. The higher it is, the more details will be calculated, which will take more time.",
"Change the CX value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Change the CY value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Reset parameters to default values",
"Load a fractal from file",
"Save active fractal to file",
"Fractal type",
"Options",
"Reset to default values",
"Preview options",
"Realtime preview",
"If you enable this option the preview will be redrawn automatically.",
"Redraw",
"Redraw preview",
"Zoom options",
"Undo zoom",
"Undo last zoom",
"Redo zoom",
"Redo last zoom",
"Step in",
"Step out",
"Colors",
"Color density",
"Red",
"Green",
"Blue",
"Change the intensity of the red channel",
"Change the intensity of the green channel",
"Change the intensity of the blue channel",
"Color function",
"Sine",
"Cosine",
"None",
"Use sine-function for this color component",
"Use cosine-function for this color component",
"Use linear mapping instead of any trigonometrical function for this color channel",
"Inversion",
"If you enable this option higher color values will be swapped with lower ones and vice versa.",
"Color mode",
"As specified above",
"Create a color-map with the options you specified above (color density/function). The result is visible in the preview image",
"Apply active gradient to final image",
"Create a color-map using a gradient from the gradient editor.",
"Gradients",
"Fractals",
"Accept settings and start the calculation of the fractal",
"Discard any changes and close dialog box",
"About",
"Show information about the plug-in and the author",
"This will close the information box",
"Error opening '%.100s' could not save",
"Failed to write file\n",
"Save: No filename given",
"Save: Can't save to a directory",
"Load fractal parameters",
"Click here to load your file.",
"Click here to cancel load procedure.",
"Save fractal parameters",
"Click here to save your file.",
"Click here to cancel save procedure.",
"Save settings",
"This saves the currently selected language to the configuration file",
},
/* Messages en fran<61>ais */
{
"Accepter",
"Annuler",
"Effacer fractal",
"Etes-vous sur de vouloir effacer le fichier",
"\"%s\" de la liste est du disque?",
"Effacer",
"Erreur lors de l'ouverture du fichier: %s",
"Le fichier '%s' ne correspond pas au format FractalExplorer!",
"Le fichier '%s' est corrompu - Ligne %d incorrecte.",
"Erreur interne - l'<27>l<EFBFBD>ment de la liste contient un objet NULL!",
"Ev<EFBFBD>nement inconnu.\n",
"Changer le nom du fractal",
"Nom du fractal:",
"Nouveau fractal",
"%s [copie]",
"Enregistrer",
"Enregistrer sous...",
"Copier",
"Charger",
"Aucun r<>pertoire FractalExplorer inscrit dans gimprc:\n"
"Vous devez aujouter une ligne telle que\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"dans votre fichier ~/.gimprc/gimprc\n",
"fractalexplorer-path n'est pas configur<75> correctement - \nDossier `%.100s' introuvable.\n",
"L'entr<74>e %.100s n'est pas un r<>pertoire.\n",
"Erreur lors de la lecture du r<>pertoire \"%s\".",
"Mon premier fractal",
"Choisissez un fractal en double-cliquant sur celui-ci",
"Rafra<EFBFBD>chir",
"Choix du r<>pertoire et rechargement de la collection.",
"Nouveau",
"Cr<EFBFBD>er nouveau fractal.",
"Renommer",
"Renommer le fractal contenu dans la liste.",
"Efface le fractal actuellement selection<6F> dans la liste.",
"Choisissez un d<>grad<61> de couleurs avec un double-click",
"Ajouter un dossier FractalExplorer.",
"Rechargement de nouveaux fractals.",
"Ajout de r<>pertoires",
"Param<EFBFBD>tres",
"Param<EFBFBD>tres",
"Change la premi<6D>re delimitation de l'axe x (delimitation minimale de x).",
"Change la deuxi<78>me delimitation de l'axe x (delimitation maximale de x).",
"Change la premi<6D>re delimitation de l'axe y (delimitation minimale de y).",
"Change la deuxi<78>me delimitation de l'axe y (delimitation maximale de y).",
"Change la valeur d'iteration. Une valeur plus haute rend l'image plus detail<69>e, mais utilise plus de temps de calcul.",
"Change la valeur CX (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Change la valeur CY (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Remets tous les param<61>tres <20> leur valeur par d<>faut.",
"Charge un fractal <20> partir d'un fichier.",
"Enregistre un fractal dans un fichier.",
"Type de fractal",
"Configuration",
"Valeurs par d<>faut",
"Pr<EFBFBD>visualisation",
"En temps r<>el",
"Si vous activez cette option, la fen<65>tre de pr<70>visualisation sera automatiquement rafra<72>chie apr<70>s chaque changement d'option.",
"Actualiser",
"Actualise et redessine la pr<70>visualisation.",
"Options de zoom",
"Annuler zoom",
"Ceci annule le dernier zoom.",
"Refaire zoom",
"Ceci annule la derni<6E>re annulation du zoom.",
"Se rapprocher",
"S'<27>loigner",
"Couleurs",
"Densit<EFBFBD> des valeurs RVB d'une couleur",
"Rouge",
"Vert",
"Bleu",
"Change l'intensit<69> du canal rouge.",
"Change l'intensit<69> du canal vert.",
"Change l'intensit<69> du canal bleu.",
"Fonctions appliqu<71>s aux canaux RVB",
"Sinus",
"Cosinus",
"Aucun",
"Utilise la fonction trigonom<6F>trique 'sinus' pour le calcul de cette composante de couleur.",
"Utilise la fonction trigonom<6F>trique 'cosinus' pour le calcul de cette composante de couleur.",
"Utilise une fonction lin<69>aire au lieu d'une fonction trigonom<6F>trique pour ce canal.",
"Inversion",
"En activant cette option, vous assignez de grandes valeurs de couleurs aux couleurs ayant re<72>u des valeurs petites et vice versa.",
"Mode de couleur",
"Comme specifi<66> ci-dessus",
"Cr<EFBFBD>e une palette de couleur en utilisant les options que vous avez choisies ci-dessus (densit<69>/fonction). Le r<>sultat est visible dans l'image de pr<70>visualisation.",
"Applique le d<>grad<61> de couleur actif",
"Cr<EFBFBD>e une palette en utilisant le d<>grad<61> de couleur du 'Gradient Editor'.",
"D<EFBFBD>grad<EFBFBD>s",
"Fractals",
"Accepte les options et d<>marre la calculation du fractal.",
"Rejette tout changement et ferme la bo<62>te de dialogue.",
"Info...",
"Affiche des informations concernant l'auteur et le plug-in.",
"Ceci fermera la bo<62>te de dialogue d'info.",
"Erreur lors de l'ouverture de '%.100s'. Sauvegarde echou<6F>e.",
"Ecriture du fichier impossible.\n",
"Enregistrement: Aucun fichier specifi<66>.",
"Enregistrement: Impossible de sauvegarder dans un r<>pertoire.",
"Chargement des param<61>tres d'un fractal",
"Cliquez ici afin de charger un fichier FractalExplorer.",
"Cliquez ici pour interrompre la proc<6F>dure de chargement.",
"Enregistrement des param<61>tres d'un fractal",
"Cliquez ici pour charger votre fichier.",
"Cliquez ici pour imterropre la proc<6F>dure d'enregistrement.",
"Enregistrer langue",
"Ceci enregistre la langue actuelle dans le fichier de configuration.",
},
/* Deutsche Mitteilungen */
{
"Weiter",
"Abbrechen",
"Fraktal l<>schen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen m<>chten?",
"L<EFBFBD>schen",
"Fehler beim <20>ffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist besch<63>digt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"<EFBFBD>ndere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie m<>ssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einf<6E>gen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"W<EFBFBD>hlen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"L<EFBFBD>scht das gerade gew<65>hlte Fraktal der Liste.",
"W<EFBFBD>hlen Sie einen Farbverlauf durch Doppelklick aus",
"F<EFBFBD>ge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzuf<75>gen.",
"Fraktal-Optionen",
"Parameter",
"<EFBFBD>ndert die erste (minimale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die erste (minimale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die Iterations-Variable. Je h<>her sie ist, um so genauer und detailierter wird das Bild sein. Eine gr<67>ssere Berechenzeit ist allerdings in Kauf zu nehmen.",
"<EFBFBD>ndert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"<EFBFBD>ndert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zur<EFBFBD>cksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckg<EFBFBD>ngig",
"Macht den letzten Zoom-Vorgang wieder r<>ckg<6B>ngig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensit<EFBFBD>t",
"Rot",
"Gruen",
"Blau",
"<EFBFBD>ndert die Intensit<69>t des roten Kanals.",
"<EFBFBD>ndert die Intensit<69>t des gruenen Kanals.",
"<EFBFBD>ndert die Intensit<69>t des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion f<>r diese Farbkomponente.",
"Verwende Cosinus-Funktion f<>r diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch h<>here ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensit<69>t/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverl<EFBFBD>ufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche <20>nderungen und schliesse das Fenster.",
"<EFBFBD>ber...",
"Zeige Informationen <20>ber den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim <20>ffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
/* Schwedische Mitteilungen
========================
Hier koenntest Du die schwedischen Texte einfuegen, d.h. die deutschen ueberschreiben.
*/
{
"Weiter",
"Abbrechen",
"Fraktal l<>schen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen m<>chten?",
"L<EFBFBD>schen",
"Fehler beim <20>ffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist besch<63>digt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"<EFBFBD>ndere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie m<>ssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einf<6E>gen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"W<EFBFBD>hlen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"L<EFBFBD>scht das gerade gew<65>hlte Fraktal der Liste.",
"W<EFBFBD>hlen Sie einen Farbverlauf durch Doppelklick aus",
"F<EFBFBD>ge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzuf<75>gen.",
"Fraktal-Optionen",
"Parameter",
"<EFBFBD>ndert die erste (minimale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die erste (minimale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die Iterations-Variable. Je h<>her sie ist, um so genauer und detailierter wird das Bild sein. Eine gr<67>ssere Berechenzeit ist allerdings in Kauf zu nehmen.",
"<EFBFBD>ndert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"<EFBFBD>ndert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zur<EFBFBD>cksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckg<EFBFBD>ngig",
"Macht den letzten Zoom-Vorgang wieder r<>ckg<6B>ngig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensit<EFBFBD>t",
"Rot",
"Gruen",
"Blau",
"<EFBFBD>ndert die Intensit<69>t des roten Kanals.",
"<EFBFBD>ndert die Intensit<69>t des gruenen Kanals.",
"<EFBFBD>ndert die Intensit<69>t des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion f<>r diese Farbkomponente.",
"Verwende Cosinus-Funktion f<>r diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch h<>here ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensit<69>t/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverl<EFBFBD>ufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche <20>nderungen und schliesse das Fenster.",
"<EFBFBD>ber...",
"Zeige Informationen <20>ber den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim <20>ffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
};

View File

@ -1,454 +1,5 @@
static char * msg[4][104] =
{
/* English messages */
{
"OK",
"Cancel",
"Delete fractal",
"Are you sure you want to delete",
"\"%s\" from the list and from disk?",
"Delete",
"Error opening: %s",
"File '%s' Not a FractalExplorer file",
"File '%s' corrupt file - Line %d Option section incorrect",
"Internal error - list item has null object!",
"Unknown event\n",
"Edit fractal name",
"Fractal name:",
"New fractal",
"%s [copy]",
"Save",
"Save as...",
"Copy",
"Load",
"No fractalexplorer-path in gimprc:\n"
"You need to add an entry like\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"to your ~/.gimprc/gimprc file\n",
"fractalexplorer-path miss-configured - \nPath `%.100s' not found\n",
"Entry %.100s is not a directory\n",
"error reading fractalexplorer directory \"%s\"",
"My first fractal",
"Choose fractal by double-clicking on it",
"Rescan",
"Select directory and rescan collection",
"New",
"Create a new fractal for editing",
"Rename",
"Rename fractal in list",
"Delete currently selected fractal",
"Choose gradient by double-clicking on it",
"Add FractalExplorer path",
"Rescan for fractals",
"Add dir",
"Parameters",
"Parameters",
"Change the first (minimal) x-coordinate delimitation",
"Change the second (maximal) x-coordinate delimitation",
"Change the first (minimal) y-coordinate delimitation",
"Change the second (maximal) y-coordinate delimitation",
"Change the iteration value. The higher it is, the more details will be calculated, which will take more time.",
"Change the CX value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Change the CY value (changes aspect of fractal, active with every fractal but Mandelbrot and Sierpinski)",
"Reset parameters to default values",
"Load a fractal from file",
"Save active fractal to file",
"Fractal type",
"Options",
"Reset to default values",
"Preview options",
"Realtime preview",
"If you enable this option the preview will be redrawn automatically.",
"Redraw",
"Redraw preview",
"Zoom options",
"Undo zoom",
"Undo last zoom",
"Redo zoom",
"Redo last zoom",
"Step in",
"Step out",
"Colors",
"Color density",
"Red",
"Green",
"Blue",
"Change the intensity of the red channel",
"Change the intensity of the green channel",
"Change the intensity of the blue channel",
"Color function",
"Sine",
"Cosine",
"None",
"Use sine-function for this color component",
"Use cosine-function for this color component",
"Use linear mapping instead of any trigonometrical function for this color channel",
"Inversion",
"If you enable this option higher color values will be swapped with lower ones and vice versa.",
"Color mode",
"As specified above",
"Create a color-map with the options you specified above (color density/function). The result is visible in the preview image",
"Apply active gradient to final image",
"Create a color-map using a gradient from the gradient editor.",
"Gradients",
"Fractals",
"Accept settings and start the calculation of the fractal",
"Discard any changes and close dialog box",
"About",
"Show information about the plug-in and the author",
"This will close the information box",
"Error opening '%.100s' could not save",
"Failed to write file\n",
"Save: No filename given",
"Save: Can't save to a directory",
"Load fractal parameters",
"Click here to load your file.",
"Click here to cancel load procedure.",
"Save fractal parameters",
"Click here to save your file.",
"Click here to cancel save procedure.",
"Save settings",
"This saves the currently selected language to the configuration file",
},
/* Messages en fran<61>ais */
{
"Accepter",
"Annuler",
"Effacer fractal",
"Etes-vous sur de vouloir effacer le fichier",
"\"%s\" de la liste est du disque?",
"Effacer",
"Erreur lors de l'ouverture du fichier: %s",
"Le fichier '%s' ne correspond pas au format FractalExplorer!",
"Le fichier '%s' est corrompu - Ligne %d incorrecte.",
"Erreur interne - l'<27>l<EFBFBD>ment de la liste contient un objet NULL!",
"Ev<EFBFBD>nement inconnu.\n",
"Changer le nom du fractal",
"Nom du fractal:",
"Nouveau fractal",
"%s [copie]",
"Enregistrer",
"Enregistrer sous...",
"Copier",
"Charger",
"Aucun r<>pertoire FractalExplorer inscrit dans gimprc:\n"
"Vous devez aujouter une ligne telle que\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n"
"dans votre fichier ~/.gimprc/gimprc\n",
"fractalexplorer-path n'est pas configur<75> correctement - \nDossier `%.100s' introuvable.\n",
"L'entr<74>e %.100s n'est pas un r<>pertoire.\n",
"Erreur lors de la lecture du r<>pertoire \"%s\".",
"Mon premier fractal",
"Choisissez un fractal en double-cliquant sur celui-ci",
"Rafra<EFBFBD>chir",
"Choix du r<>pertoire et rechargement de la collection.",
"Nouveau",
"Cr<EFBFBD>er nouveau fractal.",
"Renommer",
"Renommer le fractal contenu dans la liste.",
"Efface le fractal actuellement selection<6F> dans la liste.",
"Choisissez un d<>grad<61> de couleurs avec un double-click",
"Ajouter un dossier FractalExplorer.",
"Rechargement de nouveaux fractals.",
"Ajout de r<>pertoires",
"Param<EFBFBD>tres",
"Param<EFBFBD>tres",
"Change la premi<6D>re delimitation de l'axe x (delimitation minimale de x).",
"Change la deuxi<78>me delimitation de l'axe x (delimitation maximale de x).",
"Change la premi<6D>re delimitation de l'axe y (delimitation minimale de y).",
"Change la deuxi<78>me delimitation de l'axe y (delimitation maximale de y).",
"Change la valeur d'iteration. Une valeur plus haute rend l'image plus detail<69>e, mais utilise plus de temps de calcul.",
"Change la valeur CX (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Change la valeur CY (cela change l'aspect du fractal; l'option n'est pas active pour les types de fractal Mandelbrot and Sierpinski).",
"Remets tous les param<61>tres <20> leur valeur par d<>faut.",
"Charge un fractal <20> partir d'un fichier.",
"Enregistre un fractal dans un fichier.",
"Type de fractal",
"Configuration",
"Valeurs par d<>faut",
"Pr<EFBFBD>visualisation",
"En temps r<>el",
"Si vous activez cette option, la fen<65>tre de pr<70>visualisation sera automatiquement rafra<72>chie apr<70>s chaque changement d'option.",
"Actualiser",
"Actualise et redessine la pr<70>visualisation.",
"Options de zoom",
"Annuler zoom",
"Ceci annule le dernier zoom.",
"Refaire zoom",
"Ceci annule la derni<6E>re annulation du zoom.",
"Se rapprocher",
"S'<27>loigner",
"Couleurs",
"Densit<EFBFBD> des valeurs RVB d'une couleur",
"Rouge",
"Vert",
"Bleu",
"Change l'intensit<69> du canal rouge.",
"Change l'intensit<69> du canal vert.",
"Change l'intensit<69> du canal bleu.",
"Fonctions appliqu<71>s aux canaux RVB",
"Sinus",
"Cosinus",
"Aucun",
"Utilise la fonction trigonom<6F>trique 'sinus' pour le calcul de cette composante de couleur.",
"Utilise la fonction trigonom<6F>trique 'cosinus' pour le calcul de cette composante de couleur.",
"Utilise une fonction lin<69>aire au lieu d'une fonction trigonom<6F>trique pour ce canal.",
"Inversion",
"En activant cette option, vous assignez de grandes valeurs de couleurs aux couleurs ayant re<72>u des valeurs petites et vice versa.",
"Mode de couleur",
"Comme specifi<66> ci-dessus",
"Cr<EFBFBD>e une palette de couleur en utilisant les options que vous avez choisies ci-dessus (densit<69>/fonction). Le r<>sultat est visible dans l'image de pr<70>visualisation.",
"Applique le d<>grad<61> de couleur actif",
"Cr<EFBFBD>e une palette en utilisant le d<>grad<61> de couleur du 'Gradient Editor'.",
"D<EFBFBD>grad<EFBFBD>s",
"Fractals",
"Accepte les options et d<>marre la calculation du fractal.",
"Rejette tout changement et ferme la bo<62>te de dialogue.",
"Info...",
"Affiche des informations concernant l'auteur et le plug-in.",
"Ceci fermera la bo<62>te de dialogue d'info.",
"Erreur lors de l'ouverture de '%.100s'. Sauvegarde echou<6F>e.",
"Ecriture du fichier impossible.\n",
"Enregistrement: Aucun fichier specifi<66>.",
"Enregistrement: Impossible de sauvegarder dans un r<>pertoire.",
"Chargement des param<61>tres d'un fractal",
"Cliquez ici afin de charger un fichier FractalExplorer.",
"Cliquez ici pour interrompre la proc<6F>dure de chargement.",
"Enregistrement des param<61>tres d'un fractal",
"Cliquez ici pour charger votre fichier.",
"Cliquez ici pour imterropre la proc<6F>dure d'enregistrement.",
"Enregistrer langue",
"Ceci enregistre la langue actuelle dans le fichier de configuration.",
},
/* Deutsche Mitteilungen */
{
"Weiter",
"Abbrechen",
"Fraktal l<>schen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen m<>chten?",
"L<EFBFBD>schen",
"Fehler beim <20>ffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist besch<63>digt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"<EFBFBD>ndere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie m<>ssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einf<6E>gen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"W<EFBFBD>hlen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"L<EFBFBD>scht das gerade gew<65>hlte Fraktal der Liste.",
"W<EFBFBD>hlen Sie einen Farbverlauf durch Doppelklick aus",
"F<EFBFBD>ge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzuf<75>gen.",
"Fraktal-Optionen",
"Parameter",
"<EFBFBD>ndert die erste (minimale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die erste (minimale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die Iterations-Variable. Je h<>her sie ist, um so genauer und detailierter wird das Bild sein. Eine gr<67>ssere Berechenzeit ist allerdings in Kauf zu nehmen.",
"<EFBFBD>ndert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"<EFBFBD>ndert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zur<EFBFBD>cksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckg<EFBFBD>ngig",
"Macht den letzten Zoom-Vorgang wieder r<>ckg<6B>ngig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensit<EFBFBD>t",
"Rot",
"Gruen",
"Blau",
"<EFBFBD>ndert die Intensit<69>t des roten Kanals.",
"<EFBFBD>ndert die Intensit<69>t des gruenen Kanals.",
"<EFBFBD>ndert die Intensit<69>t des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion f<>r diese Farbkomponente.",
"Verwende Cosinus-Funktion f<>r diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch h<>here ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensit<69>t/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverl<EFBFBD>ufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche <20>nderungen und schliesse das Fenster.",
"<EFBFBD>ber...",
"Zeige Informationen <20>ber den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim <20>ffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
/* Schwedische Mitteilungen
========================
Hier koenntest Du die schwedischen Texte einfuegen, d.h. die deutschen ueberschreiben.
*/
{
"Weiter",
"Abbrechen",
"Fraktal l<>schen",
"Sind sie sicher, dass sie die Datei",
"\"%s\" aus der Liste und von der Festplatte entfernen m<>chten?",
"L<EFBFBD>schen",
"Fehler beim <20>ffnen der Datei: %s",
"Die Datei '%s' scheint nicht im FractalExplorer-Format zu sein!",
"Die Datei '%s' ist besch<63>digt - Zeile %d inkorrekt.",
"Interner Fehler - das Listenelement besitzt ein NULL Objekt!",
"Unbekanntes Ereignis.\n",
"<EFBFBD>ndere Fraktalnamen",
"Fraktal-Name:",
"Neues Fraktal",
"%s [Kopie]",
"Speichern",
"Speichern als...",
"Kopie",
"Laden",
"Kein fractalexplorer-path in gimprc:\n"
"Sie m<>ssen einen Eintrag wie der folgende in ihre ~/.gimprc/gimprc Datei einf<6E>gen:\n"
"(fractalexplorer-path \"${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer\n",
"fractalexplorer-path falsch konfiguriert - \nPfad `%.100s' nicht gefunden\n",
"Eintrag %.100s ist kein Verzeichnis.\n",
"Fehler beim Lesen des FractalExplorer-Verzeichnisses \"%s\".",
"Mein erstes Fraktal",
"W<EFBFBD>hlen Sie ein Fraktal durch Doppelklick aus",
"Aktualisieren",
"Wahl eines Verzeichnisses und Wiedereinlese der Dateisammlung.",
"Neu",
"Erstellt ein neues Fraktal.",
"Umbenennen",
"Benennt das Fraktal in der Liste um.",
"L<EFBFBD>scht das gerade gew<65>hlte Fraktal der Liste.",
"W<EFBFBD>hlen Sie einen Farbverlauf durch Doppelklick aus",
"F<EFBFBD>ge FractalExplorer-Pfad hinzu",
"Nach neuen Fraktalen suchen",
"Neues Verzeichis hinzuf<75>gen.",
"Fraktal-Optionen",
"Parameter",
"<EFBFBD>ndert die erste (minimale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der x-Koordinate.",
"<EFBFBD>ndert die erste (minimale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die zweite (maximale) Begrenzung der y-Koordinate.",
"<EFBFBD>ndert die Iterations-Variable. Je h<>her sie ist, um so genauer und detailierter wird das Bild sein. Eine gr<67>ssere Berechenzeit ist allerdings in Kauf zu nehmen.",
"<EFBFBD>ndert den CX-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"<EFBFBD>ndert den CY-Wert (Dies wirkt sich auf alle Fraktale aus, ausser Mandelbrot und Sierpinski).",
"Setze Parameter auf die Standardwerte zurueck.",
"Lade ein Fraktal aus einer Datei",
"Speichere das aktive Fraktal in eine Datei",
"Fraktal-Typ",
"Diverse Optionen",
"Zur<EFBFBD>cksetzen",
"Vorschau-Optionen",
"Echtzeit-Vorschau",
"Falls Sie diese Option aktivieren, wird das Vorschaufenster stets automatisch aktualisiert.",
"Neu zeichnen",
"Zeichnet die Vorschau neu",
"Zoom-Optionen",
"Rueckg<EFBFBD>ngig",
"Macht den letzten Zoom-Vorgang wieder r<>ckg<6B>ngig.",
"Wiederherstellen",
"Stellt den letzten Zoom-Vorgang wieder her.",
"Hinein",
"Hinaus",
"Farb-Optionen",
"Farbintensit<EFBFBD>t",
"Rot",
"Gruen",
"Blau",
"<EFBFBD>ndert die Intensit<69>t des roten Kanals.",
"<EFBFBD>ndert die Intensit<69>t des gruenen Kanals.",
"<EFBFBD>ndert die Intensit<69>t des blauen Kanals.",
"Farb-Funktion",
"Sinus",
"Cosinus",
"Keine",
"Verwende Sinus-Funktion f<>r diese Farbkomponente.",
"Verwende Cosinus-Funktion f<>r diese Farbkomponente.",
"Verwende lineare Farbabstufung statt einer trigonometrischen Funktion.",
"Inversion",
"Falls Sie diese Option aktivieren, werden tiefere Farbwerte durch h<>here ausgetauscht und umgekehrt.",
"Farb-Modus",
"Wie oben stehend angegeben",
"Berechne Farbpalette mit den oben angegebenen Optionen (Farb-Intensit<69>t/-Funktion). Das Resultat ist in der Vorschau sichtbar.",
"Wende aktiven Farbverlauf an",
"Berechne Farbpalette mit den Angaben eines Verlaufes aus dem Gradient-Editor.",
"Farbverl<EFBFBD>ufe",
"Fraktale",
"Akzeptiere Einstellungen und starte die Berechnung des Fraktals.",
"Verwerfe jegliche <20>nderungen und schliesse das Fenster.",
"<EFBFBD>ber...",
"Zeige Informationen <20>ber den Autor und das Plug-In.",
"Info-Box schliessen",
"Fehler beim <20>ffnen von '%.100s'. Konnte nicht speichern",
"Speichern der Datei fehlgeschlagen\n",
"Speichern: Keine Datei angegeben",
"Speichern: Kann nicht in ein Verzeichnis speichern",
"Lade Parameter eines Fraktals",
"Klicken Sie hier, um das Fraktal zu laden.",
"Klicken Sie hier, um den Ladevorgang abzubrechen.",
"Speichere Fraktalparameter",
"Klicken Sie hier, um das Fraktal in eine Datei zu speichern.",
"Klicken Sie hier, um den Speicherungsvorgang abzubrechen.",
"Sprache abspeichern",
"Klicken Sie hier, um die gewaehlte Sprache als Standard zu definieren und in die Konfigurationsdatei abzuspeichern.",
},
};
#ifndef __FRACTALEXPLORER_LANGAUGES_H__
#define __FRACTALEXPLORER_LANGAUGES_H__
enum {
MSG_OK,
@ -564,3 +115,7 @@ enum {
LNG_ITALIAN,
LNG_SPANISH
};
extern char * msg[4][104];
#endif

View File

@ -8,11 +8,16 @@ libexec_PROGRAMS = FractalExplorer
FractalExplorer_SOURCES = \
Callbacks.h \
Callbacks.c \
Dialogs.h \
Dialogs.c \
Events.h \
Events.c \
FractalExplorer.c \
FractalExplorer.h \
Globals.c \
Languages.h \
Languages.c \
logo.h \
pix_data.h