summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authormezz <mezz@df743ca5-7f9a-e211-a948-0013205c9059>2007-07-30 05:48:30 +0800
committermezz <mezz@df743ca5-7f9a-e211-a948-0013205c9059>2007-07-30 05:48:30 +0800
commit47f0924840ec204c54f7f990f37b5bad23b87566 (patch)
treef67cbc3cd580ca84df023a36a412a3d497543241 /graphics
parent90ae460e90234ab656ca8c83b788aa6d3bfba9ec (diff)
downloadmarcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar.gz
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar.bz2
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar.lz
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar.xz
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.tar.zst
marcuscom-ports-47f0924840ec204c54f7f990f37b5bad23b87566.zip
share/gnome/ -> share/.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@9261 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'graphics')
-rw-r--r--graphics/truevision/Makefile57
-rw-r--r--graphics/truevision/distinfo3
-rw-r--r--graphics/truevision/files/patch-gentoo-gcc4848
-rw-r--r--graphics/truevision/files/patch-src-density.cc37
-rw-r--r--graphics/truevision/files/patch-src-dlgutils.cc11
-rw-r--r--graphics/truevision/files/patch-src-glview.cc21
-rw-r--r--graphics/truevision/files/patch-src-linkobj.cc11
-rw-r--r--graphics/truevision/files/patch-src-texnormal.cc37
-rw-r--r--graphics/truevision/files/patch-src-texpigment.cc37
-rw-r--r--graphics/truevision/files/patch-src__povfe.cc13
-rw-r--r--graphics/truevision/pkg-descr22
-rw-r--r--graphics/truevision/pkg-plist145
12 files changed, 1242 insertions, 0 deletions
diff --git a/graphics/truevision/Makefile b/graphics/truevision/Makefile
new file mode 100644
index 000000000..b188b92da
--- /dev/null
+++ b/graphics/truevision/Makefile
@@ -0,0 +1,57 @@
+# ex:ts=8
+# Ports collection makefile for: truevision
+# Date created: Mar 12, 2002
+# Whom: ijliao
+#
+# $FreeBSD$
+#
+
+PORTNAME= truevision
+PORTVERSION= 0.5.5.2
+PORTREVISION= 2
+CATEGORIES= graphics
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
+MASTER_SITE_SUBDIR= ${PORTNAME}
+DISTNAME= ${PORTNAME}-${PORTVERSION:R}-${PORTVERSION:E}
+
+MAINTAINER= ports@FreeBSD.org
+COMMENT= The GNOME 3D modeler
+
+LIB_DEPENDS= gtkglext-x11-1.0.0:${PORTSDIR}/x11-toolkits/gtkglext
+
+WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R}
+
+USE_BZIP2= yes
+USE_GETTEXT= yes
+USE_GNOME= gnomehack gnomeprefix gnometarget intlhack libgnomeui
+USE_GL= yes
+USE_PYTHON= yes
+USE_GMAKE= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
+
+MAN1= truevision.1
+
+CPPFLAGS= -I${LOCALBASE}/include -I${X11BASE}/include \
+ `pkg-config --cflags gtkglext-1.0`
+LDFLAGS= -L${LOCALBASE}/lib -L${X11BASE}/lib \
+ `pkg-config --libs gtkglext-1.0`
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|CXXFLAGS=""||g ; \
+ s|-I/usr/include/gtkglext-1.0/||g ; \
+ s|-I/usr/local/include/gtkglext-1.0/||g ; \
+ s|-I/usr/lib/gtkglext-1.0/include/||g ; \
+ s|-I/usr/local/lib/gtkglext-1.0/include/||g ; \
+ s|-I/usr/local/include ||g' ${WRKSRC}/configure
+ @${FIND} ${WRKSRC} -name "Makefile.in" | ${XARGS} ${REINPLACE_CMD} -e \
+ 's|-I/usr/include||g ; \
+ s|-I/usr/local/include||g ; \
+ s|-I/usr/X11R6/include||g ; \
+ s|-L/usr/lib||g ; \
+ s|-L/usr/local/lib||g ; \
+ s|-L/usr/X11R6/lib||g ; \
+ s|-O2||g ; \
+ s|^truevisiondoc|#truevisiondoc|g'
+
+.include <bsd.port.mk>
diff --git a/graphics/truevision/distinfo b/graphics/truevision/distinfo
new file mode 100644
index 000000000..09615abda
--- /dev/null
+++ b/graphics/truevision/distinfo
@@ -0,0 +1,3 @@
+MD5 (truevision-0.5.5-2.tar.bz2) = f93b764d75383c4372cac73de55e79d9
+SHA256 (truevision-0.5.5-2.tar.bz2) = a9217d3351ea258ed17034688a333723b1945ccc4f7821909a9a783b858e2023
+SIZE (truevision-0.5.5-2.tar.bz2) = 1799585
diff --git a/graphics/truevision/files/patch-gentoo-gcc4 b/graphics/truevision/files/patch-gentoo-gcc4
new file mode 100644
index 000000000..1ecc9b6c8
--- /dev/null
+++ b/graphics/truevision/files/patch-gentoo-gcc4
@@ -0,0 +1,848 @@
+--- include/bicubic.h.orig 2005-08-29 12:24:53.000000000 +0200
++++ include/bicubic.h 2007-03-23 16:12:08.934381832 +0100
+@@ -27,6 +27,10 @@
+ #include "object3d.h"
+
+
++// declarations to avoid friend injection problems
++void sign_bicubic_current_point_changed( GtkWidget *wid, gpointer data );
++void sign_bicubic_current_point_num_changed( GtkWidget *wid, gpointer data );
++
+ // Definition
+ class Bicubic : public Object3D_with_material {
+ #define SENDER ((Bicubic*)data)
+--- include/blob.h.orig 2005-08-29 12:19:22.000000000 +0200
++++ include/blob.h 2007-03-23 15:22:43.688748645 +0100
+@@ -29,6 +29,11 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_blob_add_sphere( GtkWidget *wid, gpointer data );
++void sign_blob_add_cylinder( GtkWidget *wid, gpointer data );
++bool BlobTestFunc( gpointer data, float x, float y, float z );
++
+ class Blob : public ObjCSG {
+
+ #define SENDER ((Blob*)data)
+--- include/camera.h.orig 2005-08-29 11:45:42.000000000 +0200
++++ include/camera.h 2007-03-23 11:30:35.370600907 +0100
+@@ -26,6 +26,9 @@
+ using namespace std;
+ #include "object3d.h"
+
++// declaration to avoid friend injection problems
++void sign_camera_mode( GtkWidget *wid, gpointer data );
++
+ // Definition
+ // Camera object
+ class Camera : public Object3D {
+--- include/density.h.orig 2005-08-27 15:04:26.000000000 +0200
++++ include/density.h 2007-03-23 11:30:09.030619237 +0100
+@@ -27,6 +27,11 @@
+ #include "material.h"
+ #include "mapedit.h"
+
++// declarations to avoid friend injection problems
++void sign_density_delete( GtkWidget *wid, gpointer data );
++void sign_density_type_changed( GtkWidget *wid, gpointer data );
++void sign_density_densblocktype_changed( gpointer data );
++
+ //****************************************************
+ // Density class :
+ // Used to modify media in pov material interiors & in atmospheric
+--- include/dlgutils.h.orig 2005-08-31 19:31:43.000000000 +0200
++++ include/dlgutils.h 2007-03-23 11:32:23.767064347 +0100
+@@ -87,6 +87,9 @@
+ //**************************************
+ char* extract_filename( char *str );
+
++// declaration to avoid friend injection problems
++void sign_splash_closed( GtkWidget *wid, GdkEvent *ev, gpointer data );
++
+ //*************************************************************
+ // Splash screen
+ // create & destroy a window displayed during
+--- include/glview2d.h.orig 2005-04-01 10:19:53.000000000 +0200
++++ include/glview2d.h 2007-03-23 11:36:02.818646655 +0100
+@@ -26,6 +26,10 @@
+ using namespace std;
+ #include "glview.h"
+
++// declarations to avoid friend injection probems
++void sign_toggle_grid( GtkWidget *wid, gpointer obj );
++void sign_toggle_labels( GtkWidget *wid, gpointer obj );
++
+ // Classe 2D
+ class glview2d : public glview {
+ #define SENDER ((glview2d*)obj)
+--- include/glview3d.h.orig 2005-04-01 10:19:53.000000000 +0200
++++ include/glview3d.h 2007-03-23 11:38:45.119886583 +0100
+@@ -27,6 +27,10 @@
+ #include "glview.h"
+ #include "dlgutils.h"
+
++// declarations to avoid friend injection problems
++gint sign_toggle_3Dlabels( GtkWidget *wid, gpointer obj );
++gint sign_toggle_grids( GtkWidget *wid, gpointer obj );
++
+ class glview3d : public glview {
+ // Callback
+ #define SENDER ((glview3d*)obj)
+--- include/glview.h.orig 2005-06-08 19:45:26.000000000 +0200
++++ include/glview.h 2007-03-23 11:31:45.109961731 +0100
+@@ -76,6 +76,31 @@
+ };
+
+
++// declarations to avoid friend injection problems
++void initgl( GtkWidget *wid, gpointer data );
++void display( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
++void reshape( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
++void sign_mouse_button_pressed( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
++void sign_mouse_scroll( GtkWidget *wid, GdkEventScroll *ev, gpointer data );
++void sign_toggle_lighting( GtkWidget *wid, gpointer data );
++void sign_toggle_solid( GtkWidget *wid, gpointer data );
++void sign_toggle_smooth( GtkWidget *wid, gpointer data );
++void popup_detacher( GtkWidget *wid, GtkMenu *men );
++void sign_view_refresh( GtkWidget *wid, gpointer data );
++void sign_view_home( GtkWidget *wid, gpointer data );
++void sign_toggle_axis( GtkWidget *wid, gpointer data );
++void sign_change_view_type( GtkWidget *wid, gpointer data );
++void sign_maximize( GtkWidget *wid, gpointer data );
++void sign_roll( GtkWidget *wid, gpointer data );
++void sign_pop_menu( GtkWidget *wid, gpointer data );
++void sign_glview_tbar_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
++void sign_glview_tbar_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
++void sign_glview_tbar_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_glview_tbar_focus_in( GtkWidget *wid, GdkEventFocus *ev, gpointer data );
++void sign_glview_tbar_focus_out( GtkWidget *wid, GdkEventFocus *ev, gpointer data );
++void sign_glview_tbar_key_press( GtkWidget *wid, GdkEventKey *ev, gpointer data );
++
+ //*******************************************
+ // Classe de base
+ //*******************************************
+--- include/interface.h.orig 2005-09-30 10:45:08.000000000 +0200
++++ include/interface.h 2007-03-23 11:52:32.722630596 +0100
+@@ -40,6 +40,38 @@
+
+ #define INTERF_DEF Interface *interf = (Interface*)(app_ref->interf);
+
++// declarations to avoid friend injection problems
++void sign_interface_recent_file( GtkWidget *wid, gpointer data );
++void sign_interf_hide_panel( GtkWidget *wid, gpointer data );
++void interf_sign_menu_new( GtkAction *action, gpointer data );
++void interf_sign_menu_open( GtkWidget *wid, gpointer data );
++void interf_sign_menu_save( GtkWidget *wid, gpointer data );
++void interf_sign_menu_saveas( GtkWidget *wid, gpointer data );
++void interf_sign_menu_exportpov( GtkWidget *wid, gpointer data );
++void interf_sign_menu_exportpack( GtkWidget *wid, gpointer data );
++void interf_sign_menu_loadobj( GtkWidget *wid, gpointer data );
++void interf_sign_menu_saveobj( GtkWidget *wid, gpointer data );
++void interf_sign_menu_exit( GtkWidget *wid, gpointer data );
++void interf_sign_menu_undo( GtkWidget *wid, gpointer data );
++void interf_sign_menu_redo( GtkWidget *wid, gpointer data );
++void interf_sign_menu_cut( GtkWidget *wid, gpointer data );
++void interf_sign_menu_copy( GtkWidget *wid, gpointer data );
++void interf_sign_menu_paste( GtkWidget *wid, gpointer data );
++void interf_sign_menu_prefs( GtkWidget *wid, gpointer data );
++void interf_sign_menu_render( GtkWidget *wid, gpointer data );
++void interf_sign_menu_stop( GtkWidget *wid, gpointer data );
++void interf_sign_menu_frontend( GtkWidget *wid, gpointer data );
++void interf_sign_menu_options( GtkWidget *wid, gpointer data );
++void interf_sign_menu_fullscreen( GtkWidget *wid, gpointer data );
++void interf_sign_menu_matedit( GtkWidget *wid, gpointer data );
++void interf_sign_menu_matlib( GtkWidget *wid, gpointer data );
++void interf_sign_menu_script( GtkWidget *wid, gpointer data );
++void interf_sign_menu_help( GtkWidget *wid, gpointer data );
++void interf_sign_menu_helpon( GtkWidget *wid, gpointer data );
++void interf_sign_menu_website( GtkWidget *wid, gpointer data );
++void interf_sign_menu_about( GtkWidget *wid, gpointer data );
++void interf_sign_toolbar_pointer( GtkAction *action, gpointer data );
++
+ //*******************************************************************
+ // Class Interface
+ //
+--- include/interior.h.orig 2005-08-27 11:46:43.000000000 +0200
++++ include/interior.h 2007-03-23 12:01:45.403315691 +0100
+@@ -28,6 +28,10 @@
+ #include "media.h"
+ #include <vector>
+
++// declarations to avoid friend injection problems
++void sign_int_addmedia( GtkWidget *wid, gpointer data );
++void sign_int_media_suicide( gpointer data, gpointer victim );
++
+ class PovTexInterior : public MaterialItem {
+ #define SENDER ((PovTexInterior*)data)
+ friend void sign_int_addmedia( GtkWidget *wid, gpointer data ) { SENDER->add_media(); }
+--- include/isosurface.h.orig 2005-08-29 12:24:53.000000000 +0200
++++ include/isosurface.h 2007-03-23 16:06:38.515789260 +0100
+@@ -26,6 +26,9 @@
+ using namespace std;
+ #include "object3d.h"
+
++// declaration to avoid friend injection problems
++bool IsoSurfaceTestFunc( gpointer data, float x, float y, float z );
++
+ // Definition
+ // Box object
+ class IsoSurface : public Object3D_with_material {
+--- include/lathe.h.orig 2005-08-29 12:24:52.000000000 +0200
++++ include/lathe.h 2007-03-23 15:37:28.640743670 +0100
+@@ -29,6 +29,14 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_lathe_current_point_num_changed( GtkWidget *wid, gpointer data );
++void sign_lathe_current_point_changed( GtkWidget *wid, gpointer data );
++void sign_lathe_delete_point( GtkWidget *wid, gpointer data );
++void sign_lathe_append_point( GtkWidget *wid, gpointer data );
++void sign_lathe_prepend_point( GtkWidget *wid, gpointer data );
++void sign_lathe_insert_point( GtkWidget *wid, gpointer data );
++
+ // Definition
+ class Lathe : public Object3D_with_material {
+ #define SENDER ((Lathe*)data)
+--- include/mapedit.h.orig 2005-08-27 12:01:49.000000000 +0200
++++ include/mapedit.h 2007-03-23 12:25:16.516041598 +0100
+@@ -80,6 +80,21 @@
+ ~MapItem_test() {}
+ };
+
++// declarations to avoid friend injection problems
++void sign_mapedit_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
++void sign_mapedit_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
++void sign_mapedit_realize( GtkWidget *wid, gpointer data );
++void sign_mapedit_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
++void sign_mapedit_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_mapedit_mouse_release( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_mapedit_selection( GtkWidget *wid, gpointer data );
++void sign_mapedit_delete_item( GtkWidget *wid, gpointer data );
++void sign_mapedit_append_item( GtkWidget *wid, gpointer data );
++void sign_mapedit_prepend_item( GtkWidget *wid, gpointer data );
++void sign_mapedit_duplicate_item( GtkWidget *wid, gpointer data );
++void sign_mapedit_item_changed( gpointer data );
++void sign_mapedit_valentry_changed( GtkWidget *wid, gpointer data );
++
+ //********************************************
+ // MapEditor
+ //********************************************
+--- include/material.h.orig 2005-10-03 20:52:55.000000000 +0200
++++ include/material.h 2007-03-23 12:30:01.067631469 +0100
+@@ -45,6 +45,9 @@
+ typedef matit_type MaterialItemType;
+
+
++// declaration to avoid friend injection problems
++void sign_miname_changed( GtkWidget *wid, gpointer data );
++
+ //****************************************************
+ // Classe Item de Texture
+ //****************************************************
+@@ -116,6 +119,8 @@
+ };
+ typedef mattypes MaterialType;
+
++// declaration to avoid friend injection problems
++void sign_name_focusout( GtkWidget *wid, GdkEvent *ev, gpointer data );
+
+ //****************************************************
+ // Classe Texture de base
+--- include/matlib.h.orig 2005-09-25 20:57:05.000000000 +0200
++++ include/matlib.h 2007-03-23 12:38:27.173421857 +0100
+@@ -28,6 +28,9 @@
+ #include "main.h"
+ #include "tvwidgets.h"
+
++// declarations to avoid friend injection problems
++void sign_thumb_data_free( guchar *data, gpointer sender );
++
+ //******************************************************
+ // Material library tree Item
+ //******************************************************
+@@ -94,6 +97,15 @@
+ #define MATLIB_DEF MatLib *matlib = (MatLib*)(app_ref->matlib);
+
+
++// declarations to avoid friend injection problems
++void sign_matlib_dlg_click( GtkDialog *wid, gint button, gpointer data );
++void sign_matlib_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_matlib_icon_select( GtkIconView *view, gpointer data );
++void sign_matlib_icon_doubleclick( GtkIconView *view, GtkTreePath *path, gpointer data );
++void sign_matlib_tree_select( GtkTreeSelection *selection, gpointer data );
++void sign_matlib_tree_doubleclick( GtkTreeView* view, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
++void sign_matlib_open( GtkWidget *wid, gpointer data );
++
+ class MatLib : public app_object {
+
+ // Gtk Callbacks
+--- include/matlist.h.orig 2005-10-25 20:33:57.000000000 +0200
++++ include/matlist.h 2007-03-23 12:51:39.446555624 +0100
+@@ -43,6 +43,19 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_matlist_row_select( GtkTreeSelection *select, gpointer data );
++void sign_matlist_row_activated( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
++void sign_matlist_button_clicked( GtkWidget *wid, gpointer data );
++void sign_ed_dlg_click( GtkDialog *wid, gint button, gpointer data );
++void sign_ed_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_matlist_editor_tree_select( GtkTreeSelection *selection, gpointer data );
++void sign_ed_dlg_select( GtkWidget *wid, gpointer data );
++void sign_edit_button_clicked( GtkWidget *wid, gpointer data );
++void sign_mat_save( GtkWidget *wid, gpointer data );
++void sign_save_dlg_click( GtkWidget *wid, gint button, gpointer data );
++void sign_save_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++
+ //**************************************
+ // Classe MatList
+ //
+--- include/matpov.h.orig 2005-08-27 12:23:58.000000000 +0200
++++ include/matpov.h 2007-03-23 12:57:03.887060190 +0100
+@@ -32,6 +32,14 @@
+ #include <vector>
+
+
++// declarations to avoid friend injection problems
++void sign_texture_type_changed( GtkWidget *wid, gpointer data );
++void sign_texture_delete( GtkWidget *wid, gpointer data );
++void sign_texture_add( GtkWidget *wid, gpointer data );
++void sign_blockpat_changed( gpointer data );
++void sign_texture_child_delete( gpointer data, gpointer child );
++void sign_texture_child_move( gpointer data, gpointer child, int sens );
++
+ //****************************************************
+ // Classe Texture POV
+ //****************************************************
+--- include/media.h.orig 2005-08-27 15:12:27.000000000 +0200
++++ include/media.h 2007-03-23 13:03:26.374709301 +0100
+@@ -68,6 +68,11 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_media_delete( GtkWidget *wid, gpointer data );
++void sign_media_add_density( GtkWidget *wid, gpointer data );
++void sign_media_density_suicide( gpointer data, gpointer victim );
++
+ //****************************************************
+ // Classe Media
+ //****************************************************
+--- include/object3d.h.orig 2005-09-30 19:47:29.000000000 +0200
++++ include/object3d.h 2007-03-23 13:07:05.553272237 +0100
+@@ -93,7 +93,11 @@
+ typedef obj3dcat Object3DCategory;
+
+
+-
++// declarations to avoid friend injection problems
++void sign_entry( GtkWidget *wid, gpointer data );
++bool sign_entry2( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_hidden_changed( GtkWidget *wid, gpointer data );
++void sign_render_changed( GtkWidget *wid, gpointer data );
+
+ //**************************************
+ // Classe de base pour les objets 3D
+--- include/objectlayer.h.orig 2005-09-30 19:47:29.000000000 +0200
++++ include/objectlayer.h 2007-03-23 13:11:02.888065328 +0100
+@@ -28,6 +28,11 @@
+ #include "material.h"
+ #include <vector>
+
++// declarations to avoid friend injection problems
++void sign_objlayer_edit_clicked( GtkWidget *wid, gint button, gpointer data );
++void sign_objlayer_edit_ok_clicked( GtkWidget *wid, gpointer data );
++void sign_objlayer_edit_box_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++
+ //**************************************
+ // Layer
+ //**************************************
+--- include/objectlist.h.orig 2005-09-24 19:33:47.000000000 +0200
++++ include/objectlist.h 2007-03-23 13:21:22.641518051 +0100
+@@ -65,6 +65,26 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_layer_select( GtkTreeSelection *selection, gpointer data );
++void sign_select_lbuttons_clicked( GtkWidget *wid, gpointer data );
++gboolean sign_layer_view_clicked( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_object_select( GtkTreeSelection *selection, gpointer data );
++void sign_select_buttons_clicked( GtkWidget *wid, gpointer data );
++gboolean sign_object_view_clicked( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_object_view_double_clicked( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data);
++void sign_create_button_clicked( GtkWidget *wid, gpointer data );
++void sign_create_tree_select( GtkTreeSelection *selection, gpointer data );
++void sign_create_tree_click( GtkTreeView *View, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data );
++void sign_object_drag(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data );
++void sign_object_drop_on_layer( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data );
++void sign_object_motion_on_layer( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data );
++void sign_object_drop_on_tree( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data );
++void sign_object_motion_on_tree( GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data );
++void sign_objlist_cut_object( GtkWidget *wid, gpointer data );
++void sign_objlist_copy_object( GtkWidget *wid, gpointer data );
++void sign_objlist_paste_object( GtkWidget *wid, gpointer data );
++
+ //************************************************************
+ // Class Object List
+ //
+--- include/objparam.h.orig 2005-09-29 21:12:01.000000000 +0200
++++ include/objparam.h 2007-03-23 13:37:02.455143591 +0100
+@@ -70,6 +70,9 @@
+ virtual void display( glview *view ) {}
+ };
+
++// declaration to avoid friend injection problems
++void sign_option_combo_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe option combo
+ //*********************************************
+@@ -87,6 +90,9 @@
+ void swap_data( ObjParam *param );
+ };
+
++// declaration to avoid friend injection problems
++void sign_int_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe int
+ //*********************************************
+@@ -104,6 +110,9 @@
+ void swap_data( ObjParam *param );
+ };
+
++// declaration to avoid friend injection problems
++void sign_float_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe float
+ //*********************************************
+@@ -122,6 +131,10 @@
+ void swap_data( ObjParam *param );
+ };
+
++// declarations to avoid friend injection problems
++void sign_float_angle_flush( GtkWidget *wid, gpointer data );
++void sign_float_angle_clicked( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe float angle
+ //*********************************************
+@@ -147,6 +160,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_bool_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe bool
+ //*********************************************
+@@ -157,7 +173,7 @@
+ ObjParam_bool( const char *name, const char *sname, const char *tooltip, app_objs *appref, bool refr, bool val = false )
+ : ObjParam( refr ) ,
+ TvWidget_bool( name, sname, tooltip, appref, val ) {}
+- ObjParam_bool::ObjParam_bool( ObjParam_bool & ref ) : ObjParam( ref ), TvWidget_bool( ref ) {}
++ ObjParam_bool( ObjParam_bool & ref ) : ObjParam( ref ), TvWidget_bool( ref ) {}
+ void get_widget( GtkWidget *box, bool tt );
+ void get_widget( GtkWidget *table, bool tt, int row );
+ void flush();
+@@ -165,6 +181,9 @@
+ virtual void output_to_povray( ofstream & file ) { file << ( data ? "on" : "off"); }
+ };
+
++// declaration to avoid friend injection problems
++void sign_bool_activator_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe bool activator
+ //*********************************************
+@@ -185,6 +204,8 @@
+ virtual void output_to_povray( ofstream & file ) { file << ( data ? "on" : "off" ); }
+ };
+
++// declaration to avoid friend injection problems
++void sign_color_flush( GtkWidget *wid, gpointer data );
+ //*********************************************
+ // Classe color
+ //*********************************************
+@@ -205,6 +226,10 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_point_flush( GtkWidget *wid, gpointer data );
++void sign_point_clicked( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe point
+ //*********************************************
+@@ -243,6 +268,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_vector4_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe vector4
+ //*********************************************
+@@ -312,6 +340,10 @@
+ };
+
+
++// declarations to avoid friend injection problems
++void sign_rotation_flush( GtkWidget *wid, gpointer data );
++void sign_rotation_clicked( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe rotation
+ //*********************************************
+@@ -352,6 +384,10 @@
+ };
+
+
++// declarations to avoid friend injection problems
++void sign_ref_changed( GtkWidget *wid, gpointer data );
++void sign_texref_edit( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Texture ref
+ //*********************************************
+@@ -413,6 +449,10 @@
+ bool load( ifstream & file, char *tag );
+ //void get_material( vector<Material*> & mlist );
+ };
++
++// declaration to avoid friend injection problems
++void sign_objparam_entry_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe entry
+ //*********************************************
+@@ -431,6 +471,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_objparam_path_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe path
+ //*********************************************
+@@ -448,6 +491,9 @@
+ void swap_data( ObjParam *param );
+ };
+
++// declaration to avoid friend injection problems
++void sign_objparam_file_flush( GtkWidget *wid, gpointer data );
++
+ //*********************************************
+ // Classe file
+ //*********************************************
+--- include/povfe.h.orig 2005-10-03 21:15:11.000000000 +0200
++++ include/povfe.h 2007-03-23 13:55:59.141734924 +0100
+@@ -36,6 +36,19 @@
+ #define POVFE_DEF PovrayFE *povfe = (PovrayFE*)(app_ref->povfe);
+
+
++// declarations to avoid friend injection problems
++void sign_options_box( GtkWidget *wid, gpointer data );
++void sign_povfe_opt_click( GtkWidget *wid, gint button, gpointer data );
++void sign_povfe_opt_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_povfe_presets( GtkWidget *wid, gpointer data );
++void sign_povfe_rend_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_povfe_rend_close( GtkWidget *wid, gpointer data );
++void sign_povfe_start_stop_clicked( GtkWidget *wid, gpointer data );
++void *read_console_thread( void * data );
++void sign_povfe_console( GtkWidget *wid, gpointer data );
++void sign_povfe_cons_click( GtkWidget *wid, gint button, gpointer data );
++void sign_povfe_cons_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++
+ //**********************************************
+ // Front end Class
+ //
+--- include/povpreview.h.orig 2005-09-17 23:24:52.000000000 +0200
++++ include/povpreview.h 2007-03-23 14:02:56.935997790 +0100
+@@ -36,6 +36,11 @@
+ #define MATPREV_DEF MaterialPreview *povfe = (MaterialPreview*)(app_ref->povfe);
+
+
++// declarations to avoid friend injection problems
++void *reading_image_thread( void * data );
++void *reading_console_thread( void * data );
++void sign_matpreview_start_clicked( GtkWidget *wid, gpointer data );
++
+ //**********************************************
+ // Front end Class
+ //
+--- include/preferences.h.orig 2005-09-03 22:38:59.000000000 +0200
++++ include/preferences.h 2007-03-23 14:07:13.699826858 +0100
+@@ -31,6 +31,10 @@
+ #define PREF_DEF Preferences *pref = (Preferences*)(app_ref->prefer);
+
+
++// declarations to avoid friend injection problems
++gint dlg_click( GtkDialog *wid, gint button, gpointer data );
++gint dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++
+ //***********************************************
+ // Objet préférences
+ //***********************************************
+--- include/prism.h.orig 2005-08-29 12:24:53.000000000 +0200
++++ include/prism.h 2007-03-23 15:59:41.470412147 +0100
+@@ -30,6 +30,17 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_prism_current_point_num_changed( GtkWidget *wid, gpointer data );
++void sign_prism_current_spline_num_changed( GtkWidget *wid, gpointer data );
++void sign_prism_current_point_changed( GtkWidget *wid, gpointer data );
++void sign_prism_delete_point( GtkWidget *wid, gpointer data );
++void sign_prism_append_point( GtkWidget *wid, gpointer data );
++void sign_prism_prepend_point( GtkWidget *wid, gpointer data );
++void sign_prism_insert_point( GtkWidget *wid, gpointer data );
++void sign_prism_append_spline( GtkWidget *wid, gpointer data );
++void sign_prism_delete_spline( GtkWidget *wid, gpointer data );
++
+ // Definition
+ class Prism : public Object3D_with_material {
+ #define SENDER ((Prism*)data)
+--- include/proppanel.h.orig 2005-08-25 11:32:40.000000000 +0200
++++ include/proppanel.h 2007-03-23 14:14:05.156056630 +0100
+@@ -29,6 +29,12 @@
+ #define PROPPANEL_DEF PropPanel *proppanel = (PropPanel*)(app_ref->proppanel);
+ #define PROPPANEL_MAX_PAGE 5
+
++// declarations to avoid friend injection problems
++void sign_proppanel_clicked( GtkWidget *wid, gpointer data );
++void sign_proppanel_detach( GtkWidget *wid, gpointer data );
++bool sign_proppanel_attach( GtkWidget *wid, GdkEvent *event, gpointer data );
++void sign_proppanel_attach2( GtkWidget *wid, gpointer data );
++
+ class PropPanel : public app_object {
+ #define SENDER ((PropPanel*)data)
+ friend void sign_proppanel_clicked( GtkWidget *wid, gpointer data ) { SENDER->label_clicked( wid ); }
+--- include/pyscriptdb.h.orig 2005-10-01 07:00:57.000000000 +0200
++++ include/pyscriptdb.h 2007-03-23 16:18:43.035259272 +0100
+@@ -59,6 +59,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_run_script_from_menu( GtkWidget *wid, gpointer data );
++
+ class PyScriptDB : public app_object
+ {
+ friend void sign_run_script_from_menu( GtkWidget *wid, gpointer data ) { ((PyScript*)data)->execute(); }
+--- include/scriptobj.h.orig 2005-09-23 15:25:05.000000000 +0200
++++ include/scriptobj.h 2007-03-23 16:14:06.547439223 +0100
+@@ -58,6 +58,9 @@
+ float x4; float y4; float z4;
+ } GLQuad;
+
++// declaration to avoid friend injection problems
++void sign_scriptobj_edit( GtkWidget *wid, gpointer data );
++
+ // ScriptObj object
+ class ScriptObj : public Object3D_with_material {
+ #define SENDER ((ScriptObj*)data)
+--- include/slopemap.h.orig 2003-07-04 23:32:12.000000000 +0200
++++ include/slopemap.h 2007-03-23 14:19:27.373900278 +0100
+@@ -60,6 +60,19 @@
+ #define MAX_SLMAP_BUT 4
+
+
++// declarations to avoid friend injection problems
++void sign_slopemap_edit( GtkWidget *wid, gpointer data );
++gint sign_slopemap_editor_click( GtkWidget *wid, gint button, gpointer data );
++gint sign_slopemap_editor_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_slopecurve_expose( GtkWidget *wid, GdkEventExpose *ev, gpointer data );
++void sign_slopecurve_configure( GtkWidget *wid, GdkEventConfigure *ev, gpointer data );
++void sign_slopecurve_realize( GtkWidget *wid, gpointer data );
++void sign_slopecurve_mouse_moved( GtkWidget *wid, GdkEventMotion *ev, gpointer data );
++void sign_slopecurve_mouse_click( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_slopecurve_mouse_release( GtkWidget *wid, GdkEventButton *ev, gpointer data );
++void sign_slmap_button_clicked( GtkWidget *wid, gpointer data );
++void sign_slmap_value_changed( GtkWidget *wid, gpointer data );
++
+ class TvWidget_slopemap : public TvWidget {
+ #define SENDER ((TvWidget_slopemap*)data)
+ friend void sign_slopemap_edit( GtkWidget *wid, gpointer data ) { SENDER->open_editor(); }
+--- include/spheresweep.h.orig 2005-09-29 20:47:51.000000000 +0200
++++ include/spheresweep.h 2007-03-23 16:10:24.722280042 +0100
+@@ -28,6 +28,14 @@
+ #include "spline3d.h"
+
+
++// declarations to avoid friend injection problems
++void sign_ssweep_current_point_num_changed( GtkWidget *wid, gpointer data );
++void sign_ssweep_current_point_changed( GtkWidget *wid, gpointer data );
++void sign_ssweep_delete_point( GtkWidget *wid, gpointer data );
++void sign_ssweep_append_point( GtkWidget *wid, gpointer data );
++void sign_ssweep_prepend_point( GtkWidget *wid, gpointer data );
++void sign_ssweep_insert_point( GtkWidget *wid, gpointer data );
++
+ //*******************************************************
+ // Class sphere sweep
+ //
+--- include/texnormal.h.orig 2005-08-27 12:40:52.000000000 +0200
++++ include/texnormal.h 2007-03-23 14:25:59.402093919 +0100
+@@ -29,6 +29,11 @@
+ #include "slopemap.h"
+
+
++// declarations to avoid friend injection problems
++void sign_normal_type_changed( GtkWidget *wid, gpointer data );
++void sign_normblocktype_changed( gpointer data );
++MapItem *mapedit_feeder_normal( gpointer data );
++
+ class PovTexNormal : public MaterialItem {
+ #define SENDER ((PovTexNormal*)data)
+ friend void sign_normal_type_changed( GtkWidget *wid, gpointer data ) { SENDER->type_changed(); }
+--- include/texpigment.h.orig 2005-08-27 12:40:09.000000000 +0200
++++ include/texpigment.h 2007-03-23 14:38:56.816494478 +0100
+@@ -27,6 +27,11 @@
+ #include "material.h"
+ #include "mapedit.h"
+
++// declarations to avoid friend injection problems
++void sign_pigtype_changed( GtkWidget *wid, gpointer data );
++void sign_colblocktype_changed( gpointer data );
++void sign_pigblocktype_changed( gpointer data );
++
+ //****************************************************
+ // Pigment class
+ //****************************************************
+@@ -111,6 +116,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_mapitemcol_changed( gpointer data );
++
+ //****************************************************
+ // MapItem solid color
+ //****************************************************
+--- include/tvwidgets.h.orig 2005-09-30 11:33:29.000000000 +0200
++++ include/tvwidgets.h 2007-03-23 15:11:14.460894676 +0100
+@@ -84,6 +84,9 @@
+ virtual void copy( TvWidget *wid ) {}
+ };
+
++// declaration to avois friend injection problems
++void sign_rolling_box_clicked( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // Rolling box
+ //**********************************************************
+@@ -143,6 +146,9 @@
+ bool load( ifstream & file, char * tag );
+ };
+
++// declaration to avois friend injection problems
++void sign_bool_activator_clicked( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget BOOL ACTIVATOR
+ //**********************************************************
+@@ -352,6 +358,10 @@
+ //int get_blue() { return data[2]; }
+ };
+
++// declarations to avois friend injection problems
++void sign_pigcolor_changed( GtkWidget *picker, gpointer data );
++void sign_pigalpha_changed( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget PIGMENT
+ //**********************************************************
+@@ -702,6 +712,9 @@
+ void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
+ };
+
++// declaration to avoid friend injection problems
++void sign_file_changed( GnomeFileEntry *fentry, gpointer data );
++
+ //**********************************************************
+ // TvWidget FILE
+ //**********************************************************
+@@ -740,6 +753,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_blockp_type_changed( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget Block Pattern
+ //**********************************************************
+@@ -819,6 +835,9 @@
+ void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
+ };
+
++// declaration to avoid friend injection problems
++void sign_warptype_changed( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget WARP
+ //**********************************************************
+@@ -879,6 +898,9 @@
+ void get_widget_rb( GtkWidget *box, bool tt ) { rb->get_widget_rb( box, tt ); }
+ };
+
++// declaration to avoid friend injection problems
++void sign_blendtype_changed( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget BLENDMAP
+ //**********************************************************
+@@ -917,6 +939,9 @@
+ };
+
+
++// declaration to avoid friend injection problems
++void sign_wavetype_changed( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget BLENDMAP MODIFIERS
+ //**********************************************************
+@@ -1079,6 +1104,16 @@
+ };
+ */
+
++// declarations to avoid friend injection problems
++void sign_tvwid_func_open_dialog( GtkWidget* wid, gpointer data );
++void sign_tvwid_func_dlg_click( GtkDialog *wid, gint button, gpointer data );
++void sign_tvwid_func_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_tvwid_func_insert( GtkWidget *wid, gpointer data );
++void sign_tvwid_func_clear( GtkWidget *wid, gpointer data );
++void sign_tvwid_func_cut( GtkWidget *wid, gpointer data );
++void sign_tvwid_func_copy( GtkWidget *wid, gpointer data );
++void sign_tvwid_func_paste( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget Function
+ //**********************************************************
+@@ -1132,6 +1167,15 @@
+
+
+
++// declarations to avoid friend injection problems
++void sign_tvwid_tb_open_dialog( GtkWidget* wid, gpointer data );
++void sign_tvwid_tb_dlg_click( GtkDialog *wid, gint button, gpointer data );
++void sign_tvwid_tb_dlg_destroy( GtkWidget *wid, GdkEvent *ev, gpointer data );
++void sign_tvwid_tb_clear( GtkWidget *wid, gpointer data );
++void sign_tvwid_tb_cut( GtkWidget *wid, gpointer data );
++void sign_tvwid_tb_copy( GtkWidget *wid, gpointer data );
++void sign_tvwid_tb_paste( GtkWidget *wid, gpointer data );
++
+ //**********************************************************
+ // TvWidget TextButton
+ //**********************************************************
diff --git a/graphics/truevision/files/patch-src-density.cc b/graphics/truevision/files/patch-src-density.cc
new file mode 100644
index 000000000..f93a18c8b
--- /dev/null
+++ b/graphics/truevision/files/patch-src-density.cc
@@ -0,0 +1,37 @@
+--- src/density.cc.orig Tue Oct 4 03:02:24 2005
++++ src/density.cc Tue Oct 18 18:54:34 2005
+@@ -198,9 +198,9 @@
+
+ if ( blockdens1 == NULL && type->value() == 1 )
+ {
+- blockdens1 = new PovTexDensity( app_ref, NULL, NULL, false );
+- blockdens2 = new PovTexDensity( app_ref, NULL, NULL, false );
+- blockdens3 = new PovTexDensity( app_ref, NULL, NULL, false );
++ blockdens1 = new PovTexDensity( app_ref, NULL, NULL, NULL, false );
++ blockdens2 = new PovTexDensity( app_ref, NULL, NULL, NULL, false );
++ blockdens3 = new PovTexDensity( app_ref, NULL, NULL, NULL, false );
+ blockdens1->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ blockdens2->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ }
+@@ -479,9 +479,9 @@
+
+ if ( !strcmp( tag, "DENSITY" ) )
+ {
+- if ( blockdens1 == NULL ) { blockdens1 = new PovTexDensity( app_ref, NULL, NULL, false ); blockdens1->load( file, tag ); continue; }
+- if ( blockdens2 == NULL ) { blockdens2 = new PovTexDensity( app_ref, NULL, NULL, false ); blockdens2->load( file, tag ); continue; }
+- if ( blockdens3 == NULL ) { blockdens3 = new PovTexDensity( app_ref, NULL, NULL, false ); blockdens3->load( file, tag ); continue; }
++ if ( blockdens1 == NULL ) { blockdens1 = new PovTexDensity( app_ref, NULL, NULL, NULL, false ); blockdens1->load( file, tag ); continue; }
++ if ( blockdens2 == NULL ) { blockdens2 = new PovTexDensity( app_ref, NULL, NULL, NULL, false ); blockdens2->load( file, tag ); continue; }
++ if ( blockdens3 == NULL ) { blockdens3 = new PovTexDensity( app_ref, NULL, NULL, NULL, false ); blockdens3->load( file, tag ); continue; }
+ tvio_skip_section( file );
+ }
+
+@@ -556,7 +556,7 @@
+ MapItem_density::MapItem_density( float val, guint8 c, app_objs *appref ) : MapItem( _("Density"), val )
+ {
+ color[0]=color[1]=color[2]=c; color[3]=255;
+-density = new PovTexDensity( appref, NULL, NULL, false );
++density = new PovTexDensity( appref, NULL, NULL, NULL, false );
+ char text[25];
+ sprintf( text, "Map density #%u", obj_count++ );
+ density->set_name( text );
diff --git a/graphics/truevision/files/patch-src-dlgutils.cc b/graphics/truevision/files/patch-src-dlgutils.cc
new file mode 100644
index 000000000..9c4a840a1
--- /dev/null
+++ b/graphics/truevision/files/patch-src-dlgutils.cc
@@ -0,0 +1,11 @@
+--- src/dlgutils.cc.orig Sun Jun 12 02:34:25 2005
++++ src/dlgutils.cc Mon Jun 20 23:50:40 2005
+@@ -27,7 +27,7 @@
+
+ #include "include/dlgutils.h"
+ #include <unistd.h>
+-#include <libintl.h>
++#include <ctype.h>
+ #include "include/main.h"
+ #include "include/preferences.h"
+ #include "config.h"
diff --git a/graphics/truevision/files/patch-src-glview.cc b/graphics/truevision/files/patch-src-glview.cc
new file mode 100644
index 000000000..c6e79fb25
--- /dev/null
+++ b/graphics/truevision/files/patch-src-glview.cc
@@ -0,0 +1,21 @@
+--- src/glview.cc.orig Sun Jun 12 02:34:25 2005
++++ src/glview.cc Tue Jun 21 01:06:43 2005
+@@ -676,15 +676,15 @@
+ default:
+ break;
+ case TV_VIEW_TOP:
+- tmp_coord += fmax(fabs(lookat->get(0)), fabs(lookat->get(2)));
++ tmp_coord += ((fabs(lookat->get(0)))>(fabs(lookat->get(2)))?(fabs(lookat->get(0))):(fabs(lookat->get(2))));
+ break;
+
+ case TV_VIEW_FRONT:
+- tmp_coord += fmax(fabs(lookat->get(0)), fabs(lookat->get(1)));
++ tmp_coord += ((fabs(lookat->get(0)))>(fabs(lookat->get(1)))?(fabs(lookat->get(0))):(fabs(lookat->get(1))));
+ break;
+
+ case TV_VIEW_RIGHT:
+- tmp_coord += fmax(fabs(lookat->get(1)), fabs(lookat->get(2)));
++ tmp_coord += ((fabs(lookat->get(1)))>(fabs(lookat->get(2)))?(fabs(lookat->get(1))):(fabs(lookat->get(2))));
+ break;
+ }
+
diff --git a/graphics/truevision/files/patch-src-linkobj.cc b/graphics/truevision/files/patch-src-linkobj.cc
new file mode 100644
index 000000000..6022b0b2a
--- /dev/null
+++ b/graphics/truevision/files/patch-src-linkobj.cc
@@ -0,0 +1,11 @@
+--- src/linkobj.cc.orig Sun Feb 27 02:02:13 2005
++++ src/linkobj.cc Wed Mar 16 22:15:22 2005
+@@ -94,7 +94,7 @@
+ glScalef( a, b, c );
+ rotation->gl_rotate();
+
+- link->get_current()->display( false );
++ link->get_current()->display( NULL, false );
+
+ glPopMatrix();
+ list.end();
diff --git a/graphics/truevision/files/patch-src-texnormal.cc b/graphics/truevision/files/patch-src-texnormal.cc
new file mode 100644
index 000000000..e9097d30f
--- /dev/null
+++ b/graphics/truevision/files/patch-src-texnormal.cc
@@ -0,0 +1,37 @@
+--- src/texnormal.cc.orig Tue Oct 4 02:54:01 2005
++++ src/texnormal.cc Tue Oct 18 18:56:50 2005
+@@ -199,9 +199,9 @@
+
+ if ( normal1 == NULL && type->value() == 1 )
+ {
+- normal1 = new PovTexNormal( app_ref, false );
+- normal2 = new PovTexNormal( app_ref, false );
+- normal3 = new PovTexNormal( app_ref, false );
++ normal1 = new PovTexNormal( app_ref, NULL, false );
++ normal2 = new PovTexNormal( app_ref, NULL, false );
++ normal3 = new PovTexNormal( app_ref, NULL, false );
+ normal1->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ normal2->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ }
+@@ -528,9 +528,9 @@
+
+ if ( !strcmp( tag, "NORMAL" ) )
+ {
+- if ( normal1 == NULL ) { normal1 = new PovTexNormal( app_ref, false ); normal1->load( file, tag ); continue; }
+- if ( normal2 == NULL ) { normal2 = new PovTexNormal( app_ref, false ); normal2->load( file, tag ); continue; }
+- if ( normal3 == NULL ) { normal3 = new PovTexNormal( app_ref, false ); normal3->load( file, tag ); continue; }
++ if ( normal1 == NULL ) { normal1 = new PovTexNormal( app_ref, NULL, false ); normal1->load( file, tag ); continue; }
++ if ( normal2 == NULL ) { normal2 = new PovTexNormal( app_ref, NULL, false ); normal2->load( file, tag ); continue; }
++ if ( normal3 == NULL ) { normal3 = new PovTexNormal( app_ref, NULL, false ); normal3->load( file, tag ); continue; }
+ tvio_skip_section( file );
+ }
+
+@@ -614,7 +614,7 @@
+ MapItem_normal::MapItem_normal( float val, guint8 c, app_objs *appref ) : MapItem( _("Normal"), val )
+ {
+ color[0]=color[1]=color[2]=c; color[3]=255;
+-normal = new PovTexNormal( appref, false );
++normal = new PovTexNormal( appref, NULL, false );
+ char text[25];
+ sprintf( text, "Map normal #%u", obj_count++ );
+ normal->set_name( text );
diff --git a/graphics/truevision/files/patch-src-texpigment.cc b/graphics/truevision/files/patch-src-texpigment.cc
new file mode 100644
index 000000000..5487d5f30
--- /dev/null
+++ b/graphics/truevision/files/patch-src-texpigment.cc
@@ -0,0 +1,37 @@
+--- src/texpigment.cc.orig Tue Oct 4 02:54:41 2005
++++ src/texpigment.cc Tue Oct 18 18:58:11 2005
+@@ -236,9 +236,9 @@
+
+ if ( blockpig1 == NULL && type->value() == 2 )
+ {
+- blockpig1 = new PovTexPigment( app_ref, false );
+- blockpig2 = new PovTexPigment( app_ref, false );
+- blockpig3 = new PovTexPigment( app_ref, false );
++ blockpig1 = new PovTexPigment( app_ref, NULL, false );
++ blockpig2 = new PovTexPigment( app_ref, NULL, false );
++ blockpig3 = new PovTexPigment( app_ref, NULL, false );
+ blockpig1->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ blockpig2->add_to_tree( tree_view, tree_store, tree_selection, &node_iter );
+ }
+@@ -555,9 +555,9 @@
+
+ if ( !strcmp( tag, "PIGMENT" ) )
+ {
+- if ( blockpig1 == NULL ) { blockpig1 = new PovTexPigment( app_ref, false ); blockpig1->load( file, tag ); continue; }
+- if ( blockpig2 == NULL ) { blockpig2 = new PovTexPigment( app_ref, false ); blockpig2->load( file, tag ); continue; }
+- if ( blockpig3 == NULL ) { blockpig3 = new PovTexPigment( app_ref, false ); blockpig3->load( file, tag ); continue; }
++ if ( blockpig1 == NULL ) { blockpig1 = new PovTexPigment( app_ref, NULL, false ); blockpig1->load( file, tag ); continue; }
++ if ( blockpig2 == NULL ) { blockpig2 = new PovTexPigment( app_ref, NULL, false ); blockpig2->load( file, tag ); continue; }
++ if ( blockpig3 == NULL ) { blockpig3 = new PovTexPigment( app_ref, NULL, false ); blockpig3->load( file, tag ); continue; }
+ tvio_skip_section( file );
+ }
+
+@@ -641,7 +641,7 @@
+ MapItem_pigment::MapItem_pigment( float val, guint8 c, app_objs *appref ) : MapItem( _("Pigment"), val )
+ {
+ color[0]=color[1]=color[2]=c; color[3]=255;
+-pigment = new PovTexPigment( appref, false );
++pigment = new PovTexPigment( appref, NULL, false );
+ char text[25];
+ sprintf( text, "Map pigment #%u", obj_count++ );
+ pigment->set_name( text );
diff --git a/graphics/truevision/files/patch-src__povfe.cc b/graphics/truevision/files/patch-src__povfe.cc
new file mode 100644
index 000000000..befe9affc
--- /dev/null
+++ b/graphics/truevision/files/patch-src__povfe.cc
@@ -0,0 +1,13 @@
+--- src/povfe.cc.orig Tue Oct 4 04:24:37 2005
++++ src/povfe.cc Tue Oct 18 19:11:46 2005
+@@ -36,6 +36,10 @@
+ #include "include/scene.h"
+ #include "include/tvio.h"
+
++#if defined(__FreeBSD__)
++ #define O_SYNC O_FSYNC
++#endif
++
+ // Output file format definitions
+ const int file_type_num = 4;
+ const char *file_type_list[file_type_num] = { "PNG", "PPM", "TGA", "TGA+RLE" };
diff --git a/graphics/truevision/pkg-descr b/graphics/truevision/pkg-descr
new file mode 100644
index 000000000..b66bf040d
--- /dev/null
+++ b/graphics/truevision/pkg-descr
@@ -0,0 +1,22 @@
+Truevision is a 3D modeler for Gnome. It is still in development, so not
+really stable and quite not usable yet.
+
+Features:
+
+ - Create some objects:
+ - finite solid primitives: box, sphere, cone, cylinder, torus,
+ heightfield, superellipsoid
+ - finite patch primitive: disc
+ - infinite solid primitive: plane
+ - lights: point, cylindrical, spot, area
+ - csg operators: union, merge, intersection, difference
+ - atmospherics: background, skysphere, media, fog
+ - Manipulate them (rotate, scale, translate, etc)
+ - Manipulate and edit the camera
+ - Render the scene with the multithreaded povray frontend
+ - Create and edit materials (except slope maps), with preview in editor
+ - Output the scene to povray
+ - Save and load scenes, objects, materials
+ - Save materials with preview in material library
+
+WWW: http://truevision.sourceforge.net/
diff --git a/graphics/truevision/pkg-plist b/graphics/truevision/pkg-plist
new file mode 100644
index 000000000..3e595c3c7
--- /dev/null
+++ b/graphics/truevision/pkg-plist
@@ -0,0 +1,145 @@
+bin/truevision
+lib/libftgltv.a
+share/applications/truevision.desktop
+share/application-registry/truevision.applications
+share/gnome/help/truevision/C/athmospherics.xml
+share/gnome/help/truevision/C/camera.xml
+share/gnome/help/truevision/C/figures/interface_editor.png
+share/gnome/help/truevision/C/figures/interface_glviews.png
+share/gnome/help/truevision/C/figures/interface_mateditor.png
+share/gnome/help/truevision/C/figures/interface_matlibrary.png
+share/gnome/help/truevision/C/figures/interface_objcreate.png
+share/gnome/help/truevision/C/figures/interface_objeditor.png
+share/gnome/help/truevision/C/figures/interface_objmaterial.png
+share/gnome/help/truevision/C/figures/interface_objselect.png
+share/gnome/help/truevision/C/figures/interface_prefs1.png
+share/gnome/help/truevision/C/figures/interface_prefs2.png
+share/gnome/help/truevision/C/figures/interface_prefs3.png
+share/gnome/help/truevision/C/figures/interface_prefs4.png
+share/gnome/help/truevision/C/figures/interface_renderbox.png
+share/gnome/help/truevision/C/figures/interface_rendopt1.png
+share/gnome/help/truevision/C/figures/interface_rendopt2.png
+share/gnome/help/truevision/C/figures/interface_rendopt3.png
+share/gnome/help/truevision/C/figures/interface_rendopt4.png
+share/gnome/help/truevision/C/figures/interface_rendopt5.png
+share/gnome/help/truevision/C/figures/interface_rendopt6.png
+share/gnome/help/truevision/C/figures/interface_rendopt7.png
+share/gnome/help/truevision/C/figures/interface_rendopt8.png
+share/gnome/help/truevision/C/figures/interface_toolbar.png
+share/gnome/help/truevision/C/figures/perspcam.png
+share/gnome/help/truevision/C/functions.xml
+share/gnome/help/truevision/C/interface_editor.xml
+share/gnome/help/truevision/C/interface_glviews.xml
+share/gnome/help/truevision/C/interface_mateditor.xml
+share/gnome/help/truevision/C/interface_matlibrary.xml
+share/gnome/help/truevision/C/interface_prefs.xml
+share/gnome/help/truevision/C/interface_prefs1.xml
+share/gnome/help/truevision/C/interface_prefs2.xml
+share/gnome/help/truevision/C/interface_prefs3.xml
+share/gnome/help/truevision/C/interface_prefs4.xml
+share/gnome/help/truevision/C/interface_renderbox.xml
+share/gnome/help/truevision/C/interface_rendopt.xml
+share/gnome/help/truevision/C/interface_rendopt1.xml
+share/gnome/help/truevision/C/interface_rendopt2.xml
+share/gnome/help/truevision/C/interface_rendopt3.xml
+share/gnome/help/truevision/C/interface_rendopt4.xml
+share/gnome/help/truevision/C/interface_rendopt5.xml
+share/gnome/help/truevision/C/interface_rendopt6.xml
+share/gnome/help/truevision/C/interface_rendopt7.xml
+share/gnome/help/truevision/C/interface_rendopt8.xml
+share/gnome/help/truevision/C/interface_toolbar.xml
+share/gnome/help/truevision/C/legal.xml
+share/gnome/help/truevision/C/truevision.xml
+share/gnome/help/truevision/C/welcome.xml
+share/mime-info/truevision.keys
+share/mime-info/truevision.mime
+share/pixmaps/truevision/create_icon.png
+share/pixmaps/truevision/gnome-mime-application-x-truevision.png
+share/pixmaps/truevision/gnome-truevision.png
+share/pixmaps/truevision/lock.xpm
+share/pixmaps/truevision/mapedit_cursor.xpm
+share/pixmaps/truevision/move_icon.png
+share/pixmaps/truevision/nopreview.xpm
+share/pixmaps/truevision/object_bkgd.xpm
+share/pixmaps/truevision/object_blob.xpm
+share/pixmaps/truevision/object_box.xpm
+share/pixmaps/truevision/object_camera.xpm
+share/pixmaps/truevision/object_cone.xpm
+share/pixmaps/truevision/object_csg.xpm
+share/pixmaps/truevision/object_cylinder.xpm
+share/pixmaps/truevision/object_default.xpm
+share/pixmaps/truevision/object_default2.xpm
+share/pixmaps/truevision/object_diff.xpm
+share/pixmaps/truevision/object_disc.xpm
+share/pixmaps/truevision/object_fog.xpm
+share/pixmaps/truevision/object_hf.xpm
+share/pixmaps/truevision/object_inter.xpm
+share/pixmaps/truevision/object_lathe.xpm
+share/pixmaps/truevision/object_light.xpm
+share/pixmaps/truevision/object_link.xpm
+share/pixmaps/truevision/object_merge.xpm
+share/pixmaps/truevision/object_plane.xpm
+share/pixmaps/truevision/object_prism.xpm
+share/pixmaps/truevision/object_sphere.xpm
+share/pixmaps/truevision/object_superellipsoid.xpm
+share/pixmaps/truevision/object_text.xpm
+share/pixmaps/truevision/object_torus.xpm
+share/pixmaps/truevision/object_union.xpm
+share/pixmaps/truevision/object_visible.xpm
+share/pixmaps/truevision/page_detach.png
+share/pixmaps/truevision/render.xpm
+share/pixmaps/truevision/rotate_icon.png
+share/pixmaps/truevision/scale_icon.png
+share/pixmaps/truevision/select_icon.png
+share/pixmaps/truevision/splash.png
+share/pixmaps/truevision/trackball_icon.png
+share/pixmaps/truevision/uscale_icon.png
+share/pixmaps/truevision/view_maximize.png
+share/pixmaps/truevision/view_menu.png
+share/pixmaps/truevision/view_restore.png
+share/pixmaps/truevision/view_rolldown.png
+share/pixmaps/truevision/view_rollup.png
+share/pixmaps/truevision/warning.xpm
+share/truevision/materials/Effects/Fire1.tvm
+share/truevision/materials/Effects/water.tvm
+share/truevision/materials/Metals/Brass/Brass1A.tvm
+share/truevision/materials/Metals/Brass/Brass1B.tvm
+share/truevision/materials/Metals/Brass/Brass1C.tvm
+share/truevision/materials/Metals/Brass/Brass1D.tvm
+share/truevision/materials/Metals/Copper/Copper_1A.tvm
+share/truevision/materials/Metals/Copper/Copper_1B.tvm
+share/truevision/materials/Metals/Copper/Copper_1C.tvm
+share/truevision/materials/Metals/Gold/Gold_1A.tvm
+share/truevision/materials/Metals/Gold/Gold_1B.tvm
+share/truevision/materials/Metals/Gold/Gold_1C.tvm
+share/truevision/materials/Skies/Cloud1.tvm
+share/truevision/materials/Stones/Marble1.tvm
+share/truevision/materials/Stones/granite3.tvm
+share/truevision/materials/Woods/Golden_Oak.tvm
+share/truevision/materials/Woods/Soft_Pine.tvm
+share/truevision/python/plug-ins/about_python.py
+share/truevision/python/plug-ins/starfield.py
+share/truevision/python/tv_classes.py
+share/locale/de/LC_MESSAGES/truevision.mo
+share/locale/fr/LC_MESSAGES/truevision.mo
+share/locale/ru/LC_MESSAGES/truevision.mo
+share/mime/packages/truevision.xml
+@dirrm share/truevision/python/plug-ins
+@dirrm share/truevision/python
+@dirrm share/truevision/materials/Woods
+@dirrm share/truevision/materials/Stones
+@dirrm share/truevision/materials/Skies
+@dirrm share/truevision/materials/Metals/Gold
+@dirrm share/truevision/materials/Metals/Copper
+@dirrm share/truevision/materials/Metals/Brass
+@dirrm share/truevision/materials/Metals
+@dirrm share/truevision/materials/Glass
+@dirrm share/truevision/materials/Effects
+@dirrm share/truevision/materials
+@dirrm share/truevision
+@dirrm share/pixmaps/truevision
+@dirrm share/gnome/help/truevision/C/figures
+@dirrm share/gnome/help/truevision/C
+@dirrm share/gnome/help/truevision
+@exec %%LOCALBASE%%/bin/update-mime-database %D/share/mime
+@unexec %%LOCALBASE%%/bin/update-mime-database %D/share/mime