1997-11-25 06:05:25 +08:00
/* The GIMP -- an image manipulation program
2003-07-03 08:47:26 +08:00
* Copyright ( C ) 1995 - 2003 Spencer Kimball and Peter Mattis
1997-11-25 06:05:25 +08:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
1998-04-13 13:44:11 +08:00
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
1997-11-25 06:05:25 +08:00
*/
1999-03-28 14:55:29 +08:00
/* NOTE: This file is autogenerated by pdbgen.pl. */
2000-12-29 23:22:01 +08:00
# include "config.h"
# include <gtk/gtk.h>
2001-05-21 21:58:46 +08:00
# include "libgimpbase/gimpbasetypes.h"
2001-08-17 22:27:31 +08:00
# include "pdb-types.h"
# include "display/display-types.h"
1999-03-28 14:55:29 +08:00
# include "procedural_db.h"
1997-11-25 06:05:25 +08:00
2001-11-01 05:20:09 +08:00
# include "core/gimp.h"
2003-10-06 20:17:11 +08:00
# include "core/gimpcontainer.h"
2001-05-09 10:32:03 +08:00
# include "core/gimpimage.h"
2001-10-13 20:52:30 +08:00
# include "display/gimpdisplay-foreach.h"
2001-09-26 07:23:09 +08:00
# include "display/gimpdisplay.h"
1997-11-25 06:05:25 +08:00
1999-03-28 14:55:29 +08:00
static ProcRecord display_new_proc ;
static ProcRecord display_delete_proc ;
static ProcRecord displays_flush_proc ;
2002-12-03 20:10:21 +08:00
static ProcRecord displays_reconnect_proc ;
1997-11-25 06:05:25 +08:00
1999-03-28 14:55:29 +08:00
void
2001-07-05 03:31:35 +08:00
register_display_procs ( Gimp * gimp )
1997-11-25 06:05:25 +08:00
{
2001-07-05 03:31:35 +08:00
procedural_db_register ( gimp , & display_new_proc ) ;
procedural_db_register ( gimp , & display_delete_proc ) ;
procedural_db_register ( gimp , & displays_flush_proc ) ;
2002-12-03 20:10:21 +08:00
procedural_db_register ( gimp , & displays_reconnect_proc ) ;
1999-03-28 14:55:29 +08:00
}
1997-11-25 06:05:25 +08:00
1999-03-28 14:55:29 +08:00
static Argument *
2001-07-05 03:31:35 +08:00
display_new_invoker ( Gimp * gimp ,
Argument * args )
1999-03-28 14:55:29 +08:00
{
gboolean success = TRUE ;
Argument * return_args ;
GimpImage * gimage ;
2003-12-08 20:28:29 +08:00
GimpDisplay * display = NULL ;
1999-03-28 14:55:29 +08:00
2001-07-11 20:39:49 +08:00
gimage = gimp_image_get_by_ID ( gimp , args [ 0 ] . value . pdb_int ) ;
2002-08-30 01:21:21 +08:00
if ( ! GIMP_IS_IMAGE ( gimage ) )
1999-03-28 14:55:29 +08:00
success = FALSE ;
1997-11-25 06:05:25 +08:00
if ( success )
{
2003-12-08 20:28:29 +08:00
display = ( GimpDisplay * ) gimp_create_display ( gimp , gimage , 0x0101 ) ;
2001-11-01 05:20:09 +08:00
2003-12-08 20:28:29 +08:00
success = ( display ! = NULL ) ;
2002-10-24 21:06:03 +08:00
/* the first display takes ownership of the image */
if ( success & & gimage - > disp_count = = 1 )
g_object_unref ( gimage ) ;
1997-11-25 06:05:25 +08:00
}
1999-03-28 14:55:29 +08:00
return_args = procedural_db_return_args ( & display_new_proc , success ) ;
1997-11-25 06:05:25 +08:00
if ( success )
2003-12-08 20:28:29 +08:00
return_args [ 1 ] . value . pdb_int = gimp_display_get_ID ( display ) ;
1997-11-25 06:05:25 +08:00
return return_args ;
}
1999-03-28 14:55:29 +08:00
static ProcArg display_new_inargs [ ] =
1997-11-25 06:05:25 +08:00
{
1999-03-28 14:55:29 +08:00
{
2001-05-21 21:58:46 +08:00
GIMP_PDB_IMAGE ,
1997-11-25 06:05:25 +08:00
" image " ,
1999-03-28 14:55:29 +08:00
" The image "
1997-11-25 06:05:25 +08:00
}
} ;
1999-03-28 14:55:29 +08:00
static ProcArg display_new_outargs [ ] =
1997-11-25 06:05:25 +08:00
{
1999-03-28 14:55:29 +08:00
{
2001-05-21 21:58:46 +08:00
GIMP_PDB_DISPLAY ,
1997-11-25 06:05:25 +08:00
" display " ,
1999-03-28 14:55:29 +08:00
" The new display "
1997-11-25 06:05:25 +08:00
}
} ;
1999-03-28 14:55:29 +08:00
static ProcRecord display_new_proc =
1997-11-25 06:05:25 +08:00
{
" gimp_display_new " ,
1999-03-28 14:55:29 +08:00
" Create a new display for the specified image. " ,
" Creates a new display for the specified image. If the image already has a display, another is added. Multiple displays are handled transparently by the GIMP. The newly created display is returned and can be subsequently destroyed with a call to 'gimp-display-delete'. This procedure only makes sense for use with the GIMP UI. " ,
1997-11-25 06:05:25 +08:00
" Spencer Kimball & Peter Mattis " ,
" Spencer Kimball & Peter Mattis " ,
" 1995-1996 " ,
2001-05-21 21:58:46 +08:00
GIMP_INTERNAL ,
1997-11-25 06:05:25 +08:00
1 ,
1999-03-28 14:55:29 +08:00
display_new_inargs ,
1997-11-25 06:05:25 +08:00
1 ,
1999-03-28 14:55:29 +08:00
display_new_outargs ,
{ { display_new_invoker } }
1997-11-25 06:05:25 +08:00
} ;
static Argument *
2001-07-05 03:31:35 +08:00
display_delete_invoker ( Gimp * gimp ,
Argument * args )
1997-11-25 06:05:25 +08:00
{
1999-03-28 14:55:29 +08:00
gboolean success = TRUE ;
2003-12-08 20:28:29 +08:00
GimpDisplay * display ;
1997-11-25 06:05:25 +08:00
2003-12-08 20:28:29 +08:00
display = gimp_display_get_by_ID ( gimp , args [ 0 ] . value . pdb_int ) ;
if ( ! GIMP_IS_DISPLAY ( display ) )
1997-11-25 06:05:25 +08:00
success = FALSE ;
1999-03-28 14:55:29 +08:00
if ( success )
2003-12-08 20:28:29 +08:00
gimp_display_delete ( display ) ;
1999-03-28 14:55:29 +08:00
return procedural_db_return_args ( & display_delete_proc , success ) ;
1997-11-25 06:05:25 +08:00
}
1999-03-28 14:55:29 +08:00
static ProcArg display_delete_inargs [ ] =
1997-11-25 06:05:25 +08:00
{
1999-03-28 14:55:29 +08:00
{
2001-05-21 21:58:46 +08:00
GIMP_PDB_DISPLAY ,
1997-11-25 06:05:25 +08:00
" display " ,
1999-03-28 14:55:29 +08:00
" The display to delete "
1997-11-25 06:05:25 +08:00
}
} ;
1999-03-28 14:55:29 +08:00
static ProcRecord display_delete_proc =
1997-11-25 06:05:25 +08:00
{
" gimp_display_delete " ,
1999-03-28 14:55:29 +08:00
" Delete the specified display. " ,
" This procedure removes the specified display. If this is the last remaining display for the underlying image, then the image is deleted also. " ,
1997-11-25 06:05:25 +08:00
" Spencer Kimball & Peter Mattis " ,
" Spencer Kimball & Peter Mattis " ,
" 1995-1996 " ,
2001-05-21 21:58:46 +08:00
GIMP_INTERNAL ,
1997-11-25 06:05:25 +08:00
1 ,
1999-03-28 14:55:29 +08:00
display_delete_inargs ,
1997-11-25 06:05:25 +08:00
0 ,
NULL ,
1999-03-28 14:55:29 +08:00
{ { display_delete_invoker } }
1997-11-25 06:05:25 +08:00
} ;
static Argument *
2001-07-05 03:31:35 +08:00
displays_flush_invoker ( Gimp * gimp ,
Argument * args )
1997-11-25 06:05:25 +08:00
{
2003-10-06 20:17:11 +08:00
gimp_container_foreach ( gimp - > images , ( GFunc ) gimp_image_flush , NULL ) ;
1999-03-28 14:55:29 +08:00
return procedural_db_return_args ( & displays_flush_proc , TRUE ) ;
1997-11-25 06:05:25 +08:00
}
1999-03-28 14:55:29 +08:00
static ProcRecord displays_flush_proc =
1997-11-25 06:05:25 +08:00
{
" gimp_displays_flush " ,
" Flush all internal changes to the user interface " ,
1999-03-28 14:55:29 +08:00
" This procedure takes no arguments and returns nothing except a success status. Its purpose is to flush all pending updates of image manipulations to the user interface. It should be called whenever appropriate. " ,
1997-11-25 06:05:25 +08:00
" Spencer Kimball & Peter Mattis " ,
" Spencer Kimball & Peter Mattis " ,
" 1995-1996 " ,
2001-05-21 21:58:46 +08:00
GIMP_INTERNAL ,
1997-11-25 06:05:25 +08:00
0 ,
NULL ,
0 ,
NULL ,
1999-03-28 14:55:29 +08:00
{ { displays_flush_invoker } }
1997-11-25 06:05:25 +08:00
} ;
2002-12-03 20:10:21 +08:00
static Argument *
displays_reconnect_invoker ( Gimp * gimp ,
Argument * args )
{
gboolean success = TRUE ;
2003-12-08 20:28:29 +08:00
GimpImage * old_image ;
GimpImage * new_image ;
2002-12-03 20:10:21 +08:00
2003-12-08 20:28:29 +08:00
old_image = gimp_image_get_by_ID ( gimp , args [ 0 ] . value . pdb_int ) ;
if ( ! GIMP_IS_IMAGE ( old_image ) )
2002-12-03 20:10:21 +08:00
success = FALSE ;
2003-12-08 20:28:29 +08:00
new_image = gimp_image_get_by_ID ( gimp , args [ 1 ] . value . pdb_int ) ;
if ( ! GIMP_IS_IMAGE ( new_image ) )
2002-12-03 20:10:21 +08:00
success = FALSE ;
if ( success )
2003-12-08 20:28:29 +08:00
gimp_displays_reconnect ( gimp , old_image , new_image ) ;
2002-12-03 20:10:21 +08:00
return procedural_db_return_args ( & displays_reconnect_proc , success ) ;
}
static ProcArg displays_reconnect_inargs [ ] =
{
{
GIMP_PDB_IMAGE ,
" old_image " ,
" The old image (should have at least one display) "
} ,
{
GIMP_PDB_IMAGE ,
" new_image " ,
" The new image (must not have a display) "
}
} ;
static ProcRecord displays_reconnect_proc =
{
" gimp_displays_reconnect " ,
" Reconnect displays from one image to another image. " ,
" This procedure connects all displays of the old_image to the new_image. If the new_image already has a display the reconnect is not performed and the procedure returns without success. You should rarely need to use this function. " ,
" Spencer Kimball & Peter Mattis " ,
" Spencer Kimball & Peter Mattis " ,
" 1995-1996 " ,
GIMP_INTERNAL ,
2 ,
displays_reconnect_inargs ,
0 ,
NULL ,
{ { displays_reconnect_invoker } }
} ;