/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * PikaTextTool * Copyright (C) 2002-2010 Sven Neumann * Daniel Eddeland * Michael Natterer * * 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 3 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, see . */ #ifndef __PIKA_TEXT_TOOL_H__ #define __PIKA_TEXT_TOOL_H__ #include "pikadrawtool.h" #define PIKA_TYPE_TEXT_TOOL (pika_text_tool_get_type ()) #define PIKA_TEXT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_TEXT_TOOL, PikaTextTool)) #define PIKA_IS_TEXT_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_TEXT_TOOL)) #define PIKA_TEXT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_TEXT_TOOL, PikaTextToolClass)) #define PIKA_IS_TEXT_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_TEXT_TOOL)) #define PIKA_TEXT_TOOL_GET_OPTIONS(t) (PIKA_TEXT_OPTIONS (pika_tool_get_options (PIKA_TOOL (t)))) typedef struct _PikaTextTool PikaTextTool; typedef struct _PikaTextToolClass PikaTextToolClass; struct _PikaTextTool { PikaDrawTool parent_instance; PikaText *proxy; GList *pending; guint idle_id; gboolean moving; PikaTextBuffer *buffer; PikaText *text; PikaTextLayer *layer; PikaImage *image; GtkWidget *confirm_dialog; gboolean handle_rectangle_change_complete; gboolean text_box_fixed; PikaTextLayout *layout; gint drawing_blocked; PikaToolWidget *widget; PikaToolWidget *grab_widget; /* text editor state: */ GtkWidget *style_overlay; GtkWidget *style_editor; gboolean selecting; GtkTextIter select_start_iter; gboolean select_words; gboolean select_lines; GtkIMContext *im_context; gboolean needs_im_reset; gboolean preedit_active; gchar *preedit_string; gint preedit_cursor; GtkTextMark *preedit_start; GtkTextMark *preedit_end; gboolean overwrite_mode; gint x_pos; GtkWidget *offscreen_window; GtkWidget *proxy_text_view; GtkWidget *editor_dialog; }; struct _PikaTextToolClass { PikaDrawToolClass parent_class; }; void pika_text_tool_register (PikaToolRegisterCallback callback, gpointer data); GType pika_text_tool_get_type (void) G_GNUC_CONST; gboolean pika_text_tool_set_layer (PikaTextTool *text_tool, PikaLayer *layer); gboolean pika_text_tool_get_has_text_selection (PikaTextTool *text_tool); void pika_text_tool_delete_selection (PikaTextTool *text_tool); void pika_text_tool_cut_clipboard (PikaTextTool *text_tool); void pika_text_tool_copy_clipboard (PikaTextTool *text_tool); void pika_text_tool_paste_clipboard (PikaTextTool *text_tool); void pika_text_tool_create_vectors (PikaTextTool *text_tool); gboolean pika_text_tool_create_vectors_warped (PikaTextTool *text_tool, GError **error); PikaTextDirection pika_text_tool_get_direction (PikaTextTool *text_tool); /* only for the text editor */ void pika_text_tool_clear_layout (PikaTextTool *text_tool); gboolean pika_text_tool_ensure_layout (PikaTextTool *text_tool); void pika_text_tool_apply (PikaTextTool *text_tool, gboolean push_undo); #endif /* __PIKA_TEXT_TOOL_H__ */