Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9099/pd/src
Modified Files:
g_canvas.c g_canvas.h g_editor.c g_graph.c g_readwrite.c
g_rtext.c g_template.c g_text.c makefile.nt notes.txt
u_main.tk
Log Message:
new graph-on-parent behavior - no more of the stretching behavior. Existing
patches should behave compatibly, but new ones will work differently (much
much better.)
Index: g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** g_text.c 18 May 2005 04:28:51 -0000 1.7
--- g_text.c 2 Jul 2005 05:03:06 -0000 1.8
***************
*** 951,961 ****
}
! /* return true if the text box should be drawn.
! We don't show object boxes inside graphs. */
int text_shouldvis(t_text *x, t_glist *glist)
{
return (glist->gl_havewindow ||
(x->te_pd != canvas_class && x->te_pd->c_wb != &text_widgetbehavior) ||
! (x->te_pd == canvas_class && (((t_glist *)x)->gl_isgraph)));
}
--- 951,962 ----
}
! /* return true if the text box should be drawn. We don't show text boxes
! inside graphs---except comments, if we're doing the new (goprect) style. */
int text_shouldvis(t_text *x, t_glist *glist)
{
return (glist->gl_havewindow ||
(x->te_pd != canvas_class && x->te_pd->c_wb != &text_widgetbehavior) ||
! (x->te_pd == canvas_class && (((t_glist *)x)->gl_isgraph)) ||
! (glist->gl_goprect && (x->te_type == T_TEXT)));
}
Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** u_main.tk 25 Jun 2005 02:49:15 -0000 1.10
--- u_main.tk 2 Jul 2005 05:03:06 -0000 1.11
***************
*** 1747,1751 ****
############ pdtk_gatom_dialog -- run a gatom dialog #########
! # see graph_apply, etc., for comments about handling variable names here...
proc gatom_escape {sym} {
--- 1747,1758 ----
############ pdtk_gatom_dialog -- run a gatom dialog #########
! # dialogs like this one can come up in many copies; but in TK the easiest
! # way to get data from an "entry", etc., is to set an associated variable
! # name. This is especially true for grouped "radio buttons". So we have
! # to synthesize variable names for each instance of the dialog. The dialog
! # gets a TK pathname $id, from which it strips the leading "." to make a
! # variable suffix $vid. Then you can get the actual value out by asking for
! # [eval concat $$variablename]. There should be an easier way but I don't see
! # it yet.
proc gatom_escape {sym} {
***************
*** 1971,2109 ****
}
- ############ pdtk_graph_dialog -- dialog window for graphs #########
-
- # the graph and array dialogs can come up in many copies; but in TK the easiest
- # way to get data from an "entry", etc., is to set an associated variable
- # name. This is especially true for grouped "radio buttons". So we have
- # to synthesize variable names for each instance of the dialog. The dialog
- # gets a TK pathname $id, from which it strips the leading "." to make a
- # variable suffix $vid. Then you can get the actual value out by asking for
- # [eval concat $$variablename]. There should be an easier way but I don't see
- # it yet.
-
- proc graph_apply {id} {
- # strip "." from the TK id to make a variable name suffix
- set vid [string trimleft $id .]
- # for each variable, make a local variable to hold its name...
- set var_graph_x1 [concat graph_x1_$vid]
- global $var_graph_x1
- set var_graph_x2 [concat graph_x2_$vid]
- global $var_graph_x2
- set var_graph_xpix [concat graph_xpix_$vid]
- global $var_graph_xpix
- set var_graph_y1 [concat graph_y1_$vid]
- global $var_graph_y1
- set var_graph_y2 [concat graph_y2_$vid]
- global $var_graph_y2
- set var_graph_ypix [concat graph_ypix_$vid]
- global $var_graph_ypix
-
- pd [concat $id dialog \
- [eval concat $$var_graph_x1] \
- [eval concat $$var_graph_y1] \
- [eval concat $$var_graph_x2] \
- [eval concat $$var_graph_y2] \
- [eval concat $$var_graph_xpix] \
- [eval concat $$var_graph_ypix] \
- \;]
- }
-
- proc graph_cancel {id} {
- set cmd [concat $id cancel \;]
- # puts stderr $cmd
- pd $cmd
- }
-
- proc graph_ok {id} {
- graph_apply $id
- graph_cancel $id
- }
-
- proc pdtk_graph_dialog {id x1 y1 x2 y2 xpix ypix} {
- set vid [string trimleft $id .]
- set var_graph_x1 [concat graph_x1_$vid]
- global $var_graph_x1
- set var_graph_x2 [concat graph_x2_$vid]
- global $var_graph_x2
- set var_graph_xpix [concat graph_xpix_$vid]
- global $var_graph_xpix
- set var_graph_y1 [concat graph_y1_$vid]
- global $var_graph_y1
- set var_graph_y2 [concat graph_y2_$vid]
- global $var_graph_y2
- set var_graph_ypix [concat graph_ypix_$vid]
- global $var_graph_ypix
-
- set $var_graph_x1 $x1
- set $var_graph_x2 $x2
- set $var_graph_xpix $xpix
- set $var_graph_y1 $y1
- set $var_graph_y2 $y2
- set $var_graph_ypix $ypix
-
- toplevel $id
- wm title $id {graph}
- wm protocol $id WM_DELETE_WINDOW [concat graph_cancel $id]
-
- label $id.label -text {GRAPH BOUNDS}
- pack $id.label -side top
-
- frame $id.buttonframe
- pack $id.buttonframe -side bottom -fill x -pady 2m
- button $id.buttonframe.cancel -text {Cancel}\
- -command "graph_cancel $id"
- button $id.buttonframe.apply -text {Apply}\
- -command "graph_apply $id"
- button $id.buttonframe.ok -text {OK}\
- -command "graph_ok $id"
- pack $id.buttonframe.cancel -side left -expand 1
- pack $id.buttonframe.apply -side left -expand 1
- pack $id.buttonframe.ok -side left -expand 1
-
- frame $id.xrangef
- pack $id.xrangef -side top
-
- label $id.xrangef.l1 -text "X from:"
- entry $id.xrangef.x1 -textvariable $var_graph_x1 -width 7
- label $id.xrangef.l2 -text "to:"
- entry $id.xrangef.x2 -textvariable $var_graph_x2 -width 7
- label $id.xrangef.l3 -text "screen width:"
- entry $id.xrangef.xpix -textvariable $var_graph_xpix -width 7
- pack $id.xrangef.l1 $id.xrangef.x1 \
- $id.xrangef.l2 $id.xrangef.x2 \
- $id.xrangef.l3 $id.xrangef.xpix -side left
-
- frame $id.yrangef
- pack $id.yrangef -side top
-
- # dig in the following that the upper bound is labeled y1 but the variable is
- # y2, etc. This is to deal with the inconsistent use of "upper and lower"
- # graph bounds... in the dialog the upper Y bound is the lower valued Y pixel.
- label $id.yrangef.l1 -text "Y from:"
- entry $id.yrangef.y1 -textvariable $var_graph_y2 -width 7
- label $id.yrangef.l2 -text "to:"
- entry $id.yrangef.y2 -textvariable $var_graph_y1 -width 7
- label $id.yrangef.l3 -text "screen height:"
- entry $id.yrangef.ypix -textvariable $var_graph_ypix -width 7
- pack $id.yrangef.l1 $id.yrangef.y1 \
- $id.yrangef.l2 $id.yrangef.y2 \
- $id.yrangef.l3 $id.yrangef.ypix -side left
-
- bind $id.xrangef.x1 <KeyPress-Return> [concat graph_ok $id]
- bind $id.xrangef.x2 <KeyPress-Return> [concat graph_ok $id]
- bind $id.xrangef.xpix <KeyPress-Return> [concat graph_ok $id]
- bind $id.yrangef.y1 <KeyPress-Return> [concat graph_ok $id]
- bind $id.yrangef.y2 <KeyPress-Return> [concat graph_ok $id]
- bind $id.yrangef.ypix <KeyPress-Return> [concat graph_ok $id]
- pdtk_standardkeybindings $id.xrangef.x1
- pdtk_standardkeybindings $id.xrangef.x2
- pdtk_standardkeybindings $id.xrangef.xpix
- pdtk_standardkeybindings $id.yrangef.y1
- pdtk_standardkeybindings $id.yrangef.y2
- pdtk_standardkeybindings $id.yrangef.ypix
- $id.xrangef.x2 select from 0
- $id.xrangef.x2 select adjust end
- focus $id.xrangef.x2
- }
# begin of change "iemlib"
--- 1978,1981 ----
***************
*** 2836,2839 ****
--- 2708,2713 ----
############ pdtk_array_dialog -- dialog window for arrays #########
+ # see comments above (pdtk_gatom_dialog) about variable name handling
+
proc array_apply {id} {
# strip "." from the TK id to make a variable name suffix
***************
*** 2980,2987 ****
--- 2854,2864 ----
############ pdtk_canvas_dialog -- dialog window for canvass #########
+ # see comments above (pdtk_gatom_dialog) about variable name handling
+
proc canvas_apply {id} {
# strip "." from the TK id to make a variable name suffix
set vid [string trimleft $id .]
# for each variable, make a local variable to hold its name...
+
set var_canvas_xscale [concat canvas_xscale_$vid]
global $var_canvas_xscale
***************
*** 2990,2999 ****
set var_canvas_graphme [concat canvas_graphme_$vid]
global $var_canvas_graphme
! # set var_canvas_stretch [concat canvas_stretch_$vid]
! # global $var_canvas_stretch
pd [concat $id donecanvasdialog \
[eval concat $$var_canvas_xscale] \
[eval concat $$var_canvas_yscale] \
[eval concat $$var_canvas_graphme] \
\;]
}
--- 2867,2899 ----
set var_canvas_graphme [concat canvas_graphme_$vid]
global $var_canvas_graphme
! set var_canvas_x1 [concat canvas_x1_$vid]
! global $var_canvas_x1
! set var_canvas_x2 [concat canvas_x2_$vid]
! global $var_canvas_x2
! set var_canvas_xpix [concat canvas_xpix_$vid]
! global $var_canvas_xpix
! set var_canvas_xmargin [concat canvas_xmargin_$vid]
! global $var_canvas_xmargin
! set var_canvas_y1 [concat canvas_y1_$vid]
! global $var_canvas_y1
! set var_canvas_y2 [concat canvas_y2_$vid]
! global $var_canvas_y2
! set var_canvas_ypix [concat canvas_ypix_$vid]
! global $var_canvas_ypix
! set var_canvas_ymargin [concat canvas_ymargin_$vid]
! global $var_canvas_ymargin
!
pd [concat $id donecanvasdialog \
[eval concat $$var_canvas_xscale] \
[eval concat $$var_canvas_yscale] \
[eval concat $$var_canvas_graphme] \
+ [eval concat $$var_canvas_x1] \
+ [eval concat $$var_canvas_y1] \
+ [eval concat $$var_canvas_x2] \
+ [eval concat $$var_canvas_y2] \
+ [eval concat $$var_canvas_xpix] \
+ [eval concat $$var_canvas_ypix] \
+ [eval concat $$var_canvas_xmargin] \
+ [eval concat $$var_canvas_ymargin] \
\;]
}
***************
*** 3009,3014 ****
}
! proc pdtk_canvas_dialog {id xscale yscale graphme stretch} {
set vid [string trimleft $id .]
set var_canvas_xscale [concat canvas_xscale_$vid]
--- 2909,2915 ----
}
! proc canvas_checkcommand {id} {
set vid [string trimleft $id .]
+ # puts stderr [concat canvas_checkcommand $id $vid]
set var_canvas_xscale [concat canvas_xscale_$vid]
***************
*** 3018,3028 ****
set var_canvas_graphme [concat canvas_graphme_$vid]
global $var_canvas_graphme
! # set var_canvas_stretch [concat canvas_stretch_$vid]
! # global $var_canvas_stretch
set $var_canvas_xscale $xscale
set $var_canvas_yscale $yscale
set $var_canvas_graphme $graphme
! # set $var_canvas_stretch $stretch
toplevel $id
--- 2919,3028 ----
set var_canvas_graphme [concat canvas_graphme_$vid]
global $var_canvas_graphme
! set var_canvas_x1 [concat canvas_x1_$vid]
! global $var_canvas_x1
! set var_canvas_x2 [concat canvas_x2_$vid]
! global $var_canvas_x2
! set var_canvas_xpix [concat canvas_xpix_$vid]
! global $var_canvas_xpix
! set var_canvas_xmargin [concat canvas_xmargin_$vid]
! global $var_canvas_xmargin
! set var_canvas_y1 [concat canvas_y1_$vid]
! global $var_canvas_y1
! set var_canvas_y2 [concat canvas_y2_$vid]
! global $var_canvas_y2
! set var_canvas_ypix [concat canvas_ypix_$vid]
! global $var_canvas_ypix
! set var_canvas_ymargin [concat canvas_ymargin_$vid]
! global $var_canvas_ymargin
!
! if { [eval concat $$var_canvas_graphme] != 0 } {
! $id.xrange.entry1 configure -state normal
! $id.xrange.entry2 configure -state normal
! $id.xrange.entry3 configure -state normal
! $id.xrange.entry4 configure -state normal
! $id.yrange.entry1 configure -state normal
! $id.yrange.entry2 configure -state normal
! $id.yrange.entry3 configure -state normal
! $id.yrange.entry4 configure -state normal
! $id.xscale.entry configure -state disabled
! $id.yscale.entry configure -state disabled
! set x1 [eval concat $$var_canvas_x1]
! set y1 [eval concat $$var_canvas_y1]
! set x2 [eval concat $$var_canvas_x2]
! set y2 [eval concat $$var_canvas_y2]
! if { [eval concat $$var_canvas_x1] == 0 && \
! [eval concat $$var_canvas_y1] == 0 && \
! [eval concat $$var_canvas_x2] == 0 && \
! [eval concat $$var_canvas_y2] == 0 } {
! set $var_canvas_x2 1
! set $var_canvas_y2 1
! }
! if { [eval concat $$var_canvas_xpix] == 0 } {
! set $var_canvas_xpix 85
! set $var_canvas_xmargin 100
! }
! if { [eval concat $$var_canvas_ypix] == 0 } {
! set $var_canvas_ypix 60
! set $var_canvas_ymargin 100
! }
! } else {
! $id.xrange.entry1 configure -state disabled
! $id.xrange.entry2 configure -state disabled
! $id.xrange.entry3 configure -state disabled
! $id.xrange.entry4 configure -state disabled
! $id.yrange.entry1 configure -state disabled
! $id.yrange.entry2 configure -state disabled
! $id.yrange.entry3 configure -state disabled
! $id.yrange.entry4 configure -state disabled
! $id.xscale.entry configure -state normal
! $id.yscale.entry configure -state normal
! if { [eval concat $$var_canvas_xscale] == 0 } {
! set $var_canvas_xscale 1
! }
! if { [eval concat $$var_canvas_yscale] == 0 } {
! set $var_canvas_yscale -1
! }
! }
! }
!
! proc pdtk_canvas_dialog {id xscale yscale graphme x1 y1 x2 y2 \
! xpix ypix xmargin ymargin} {
! set vid [string trimleft $id .]
!
! set var_canvas_xscale [concat canvas_xscale_$vid]
! global $var_canvas_xscale
! set var_canvas_yscale [concat canvas_yscale_$vid]
! global $var_canvas_yscale
! set var_canvas_graphme [concat canvas_graphme_$vid]
! global $var_canvas_graphme
! set var_canvas_x1 [concat canvas_x1_$vid]
! global $var_canvas_x1
! set var_canvas_x2 [concat canvas_x2_$vid]
! global $var_canvas_x2
! set var_canvas_xpix [concat canvas_xpix_$vid]
! global $var_canvas_xpix
! set var_canvas_xmargin [concat canvas_xmargin_$vid]
! global $var_canvas_xmargin
! set var_canvas_y1 [concat canvas_y1_$vid]
! global $var_canvas_y1
! set var_canvas_y2 [concat canvas_y2_$vid]
! global $var_canvas_y2
! set var_canvas_ypix [concat canvas_ypix_$vid]
! global $var_canvas_ypix
! set var_canvas_ymargin [concat canvas_ymargin_$vid]
! global $var_canvas_ymargin
!
set $var_canvas_xscale $xscale
set $var_canvas_yscale $yscale
set $var_canvas_graphme $graphme
! set $var_canvas_x1 $x1
! set $var_canvas_y1 $y1
! set $var_canvas_x2 $x2
! set $var_canvas_y2 $y2
! set $var_canvas_xpix $xpix
! set $var_canvas_ypix $ypix
! set $var_canvas_xmargin $xmargin
! set $var_canvas_ymargin $ymargin
toplevel $id
***************
*** 3030,3033 ****
--- 3030,3036 ----
wm protocol $id WM_DELETE_WINDOW [concat canvas_cancel $id]
+ label $id.toplabel -text "Canvas Properties"
+ pack $id.toplabel -side top
+
frame $id.xscale
pack $id.xscale -side top
***************
*** 3043,3053 ****
checkbutton $id.graphme -text {graph on parent} \
! -variable $var_canvas_graphme -anchor w
pack $id.graphme -side top
! # checkbutton $id.stretch -text {stretch on resize} \
! # -variable $var_canvas_stretch -anchor w
! # pack $id.stretch -side top
frame $id.buttonframe
--- 3046,3084 ----
checkbutton $id.graphme -text {graph on parent} \
! -variable $var_canvas_graphme -anchor w \
! -command [concat canvas_checkcommand $id]
pack $id.graphme -side top
! frame $id.xrange
! pack $id.xrange -side top
! label $id.xrange.label1 -text "X range: from"
! entry $id.xrange.entry1 -textvariable $var_canvas_x1 -width 6
! label $id.xrange.label2 -text "to"
! entry $id.xrange.entry2 -textvariable $var_canvas_x2 -width 6
! label $id.xrange.label3 -text "size"
! entry $id.xrange.entry3 -textvariable $var_canvas_xpix -width 4
! label $id.xrange.label4 -text "margin"
! entry $id.xrange.entry4 -textvariable $var_canvas_xmargin -width 4
! pack $id.xrange.label1 $id.xrange.entry1 \
! $id.xrange.label2 $id.xrange.entry2 \
! $id.xrange.label3 $id.xrange.entry3 \
! $id.xrange.label4 $id.xrange.entry4 \
! -side left
+ frame $id.yrange
+ pack $id.yrange -side top
+ label $id.yrange.label1 -text "Y range: from"
+ entry $id.yrange.entry1 -textvariable $var_canvas_y1 -width 6
+ label $id.yrange.label2 -text "to"
+ entry $id.yrange.entry2 -textvariable $var_canvas_y2 -width 6
+ label $id.yrange.label3 -text "size"
+ entry $id.yrange.entry3 -textvariable $var_canvas_ypix -width 4
+ label $id.yrange.label4 -text "margin"
+ entry $id.yrange.entry4 -textvariable $var_canvas_ymargin -width 4
+ pack $id.yrange.label1 $id.yrange.entry1 \
+ $id.yrange.label2 $id.yrange.entry2 \
+ $id.yrange.label3 $id.yrange.entry3 \
+ $id.yrange.label4 $id.yrange.entry4 \
+ -side left
frame $id.buttonframe
***************
*** 3070,3073 ****
--- 3101,3105 ----
$id.xscale.entry select adjust end
focus $id.xscale.entry
+ canvas_checkcommand $id
}
Index: g_canvas.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** g_canvas.h 25 Jun 2005 02:49:15 -0000 1.7
--- g_canvas.h 2 Jul 2005 05:03:06 -0000 1.8
***************
*** 159,162 ****
--- 159,164 ----
int gl_screenx2;
int gl_screeny2;
+ int gl_xmargin; /* origin for GOP rectangle */
+ int gl_ymargin;
t_tick gl_xtick; /* ticks marking X values */
int gl_nxlabels; /* number of X coordinate labels */
***************
*** 179,183 ****
unsigned int gl_edit:1; /* edit mode */
unsigned int gl_isdeleting:1; /* we're inside glist_delete -- hack! */
! unsigned int gl_stretch:1; /* stretch contents on resize */
unsigned int gl_isgraph:1; /* show as graph on parent */
};
--- 181,185 ----
unsigned int gl_edit:1; /* edit mode */
unsigned int gl_isdeleting:1; /* we're inside glist_delete -- hack! */
! unsigned int gl_goprect:1; /* draw rectangle for graph-on-parent */
unsigned int gl_isgraph:1; /* show as graph on parent */
};
Index: makefile.nt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.nt,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** makefile.nt 30 May 2005 03:04:18 -0000 1.3
--- makefile.nt 2 Jul 2005 05:03:06 -0000 1.4
***************
*** 48,54 ****
$(PADIR)/pa_common/pa_cpuload.c \
$(PADIR)/pa_common/pa_converters.c \
$(PADIR)/pa_win/pa_win_util.c \
$(PADIR)/pa_win/pa_win_hostapis.c \
! $(PADIR)/pa_common/pa_allocation.c
SRCASIO = $(PADIR)/pa_asio/pa_asio.cpp
--- 48,55 ----
$(PADIR)/pa_common/pa_cpuload.c \
$(PADIR)/pa_common/pa_converters.c \
+ $(PADIR)/pa_common/pa_allocation.c \
$(PADIR)/pa_win/pa_win_util.c \
$(PADIR)/pa_win/pa_win_hostapis.c \
! $(PADIR)/pa_win_wmme/pa_win_wmme.c
SRCASIO = $(PADIR)/pa_asio/pa_asio.cpp
***************
*** 61,65 ****
PAOBJ = pa_stream.obj pa_trace.obj pa_skeleton.obj pa_process.obj \
pa_front.obj pa_dither.obj pa_cpuload.obj pa_converters.obj \
! pa_allocation.obj pa_win_util.obj pa_win_hostapis.obj pa_asio.obj
--- 62,67 ----
PAOBJ = pa_stream.obj pa_trace.obj pa_skeleton.obj pa_process.obj \
pa_front.obj pa_dither.obj pa_cpuload.obj pa_converters.obj \
! pa_allocation.obj pa_win_util.obj pa_win_hostapis.obj pa_asio.obj \
! pa_win_wmme.obj
***************
*** 126,129 ****
--- 128,133 ----
pa_win_hostapis.obj: $(PADIR)\pa_win\pa_win_hostapis.c
cl /c $(ALLCF) $(PADIR)\pa_win\pa_win_hostapis.c
+ pa_win_wmme.obj: $(PADIR)\pa_win_wmme\pa_win_wmme.c
+ cl /c $(ALLCF) $(PADIR)\pa_win_wmme\pa_win_wmme.c
pa_asio.obj: $(PADIR)\pa_asio\pa_asio.cpp
cl /c $(ALLCF) $(PADIR)\pa_asio\pa_asio.cpp
Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** g_canvas.c 18 May 2005 04:28:50 -0000 1.7
--- g_canvas.c 2 Jul 2005 05:03:06 -0000 1.8
***************
*** 15,18 ****
--- 15,19 ----
#include "g_all_guis.h"
+ /* LATER consider adding font size to this struct (see glist_getfont()) */
struct _canvasenvironment
{
***************
*** 402,405 ****
--- 403,407 ----
pd_bind(&x->gl_pd, canvas_makebindsym(x->gl_name));
x->gl_loading = 1;
+ x->gl_goprect = 0; /* no GOP rectangle unless it's turned on later */
x->gl_willvis = vis;
x->gl_edit = !strncmp(x->gl_name->s_name, "Untitled", 8);
***************
*** 409,413 ****
}
! void canvas_setgraph(t_glist *x, int flag);
static void canvas_coords(t_glist *x, t_symbol *s, int argc, t_atom *argv)
--- 411,415 ----
}
! void canvas_setgraph(t_glist *x, int flag, int nogoprect);
static void canvas_coords(t_glist *x, t_symbol *s, int argc, t_atom *argv)
***************
*** 419,423 ****
x->gl_pixwidth = atom_getintarg(4, argc, argv);
x->gl_pixheight = atom_getintarg(5, argc, argv);
! canvas_setgraph(x, atom_getintarg(6, argc, argv));
}
--- 421,432 ----
x->gl_pixwidth = atom_getintarg(4, argc, argv);
x->gl_pixheight = atom_getintarg(5, argc, argv);
! if (argc <= 7)
! canvas_setgraph(x, atom_getintarg(6, argc, argv), 1);
! else
! {
! x->gl_xmargin = atom_getintarg(7, argc, argv);
! x->gl_ymargin = atom_getintarg(8, argc, argv);
! canvas_setgraph(x, atom_getintarg(6, argc, argv), 0);
! }
}
***************
*** 481,486 ****
pd_bind(&x->gl_pd, canvas_makebindsym(x->gl_name));
x->gl_owner = g;
- x->gl_stretch = 1;
x->gl_isgraph = 1;
x->gl_obj.te_binbuf = binbuf_new();
binbuf_addv(x->gl_obj.te_binbuf, "s", gensym("graph"));
--- 490,495 ----
pd_bind(&x->gl_pd, canvas_makebindsym(x->gl_name));
x->gl_owner = g;
x->gl_isgraph = 1;
+ x->gl_goprect = 0;
x->gl_obj.te_binbuf = binbuf_new();
binbuf_addv(x->gl_obj.te_binbuf, "s", gensym("graph"));
***************
*** 590,593 ****
--- 599,616 ----
}
+ void canvas_drawredrect(t_canvas *x, int doit)
+ {
+ if (doit)
+ sys_vgui(".x%lx.c create line\
+ %d %d %d %d %d %d %d %d %d %d -fill #ff8080 -tags GOP\n",
+ glist_getcanvas(x),
+ x->gl_xmargin, x->gl_ymargin,
+ x->gl_xmargin + x->gl_pixwidth, x->gl_ymargin,
+ x->gl_xmargin + x->gl_pixwidth, x->gl_ymargin + x->gl_pixheight,
+ x->gl_xmargin, x->gl_ymargin + x->gl_pixheight,
+ x->gl_xmargin, x->gl_ymargin);
+ else sys_vgui(".x%lx.c delete GOP\n", glist_getcanvas(x));
+ }
+
/* the window becomes "mapped" (visible and not miniaturized) or
"unmapped" (either miniaturized or just plain gone.) This should be
***************
*** 613,616 ****
--- 636,641 ----
x->gl_mapped = 1;
canvas_drawlines(x);
+ if (x->gl_isgraph && x->gl_goprect)
+ canvas_drawredrect(x, 1);
sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x);
}
***************
*** 622,625 ****
--- 647,651 ----
/* just clear out the whole canvas... */
sys_vgui(".x%lx.c delete all\n", x);
+ #if 0
/* alternatively, we could have erased them one by one...
for (y = x->gl_list; y; y = y->g_next)
***************
*** 627,630 ****
--- 653,657 ----
... but we should go through and erase the lines as well
if we do it that way. */
+ #endif
x->gl_mapped = 0;
}
***************
*** 817,821 ****
int glist_getfont(t_glist *x)
{
! return (glist_getcanvas(x)->gl_font);
}
--- 844,851 ----
int glist_getfont(t_glist *x)
{
! while (!x->gl_env)
! if (!(x = x->gl_owner))
! bug("t_canvasenvironment");
! return (x->gl_font);
}
***************
*** 1414,1418 ****
void g_editor_setup(void);
void g_readwrite_setup(void);
! extern void graph_properties(t_gobj *z, t_glist *owner);
void g_canvas_setup(void)
--- 1444,1448 ----
void g_editor_setup(void);
void g_readwrite_setup(void);
! extern void canvas_properties(t_gobj *z);
void g_canvas_setup(void)
***************
*** 1485,1489 ****
class_addmethod(canvas_class, (t_method)canvas_map,
gensym("map"), A_FLOAT, A_NULL);
! class_setpropertiesfn(canvas_class, graph_properties);
/* ---------------------- list handling ------------------------ */
--- 1515,1519 ----
class_addmethod(canvas_class, (t_method)canvas_map,
gensym("map"), A_FLOAT, A_NULL);
! class_setpropertiesfn(canvas_class, (t_propertiesfn)canvas_properties);
/* ---------------------- list handling ------------------------ */
Index: g_rtext.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_rtext.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** g_rtext.c 6 Sep 2004 20:20:34 -0000 1.4
--- g_rtext.c 2 Jul 2005 05:03:06 -0000 1.5
***************
*** 154,162 ****
char smallbuf[200], *tempbuf;
int outchars = 0, nlines = 0, ncolumns = 0,
! pixwide, pixhigh;
! int font = glist_getfont(x->x_glist);
! int fontwidth = sys_fontwidth(font), fontheight = sys_fontheight(font);
! int findx = (*widthp + (fontwidth/2)) / fontwidth,
! findy = *heightp / fontheight;
int reportedindex = 0;
t_canvas *canvas = glist_getcanvas(x->x_glist);
--- 154,158 ----
char smallbuf[200], *tempbuf;
int outchars = 0, nlines = 0, ncolumns = 0,
! pixwide, pixhigh, font, fontwidth, fontheight, findx, findy;
int reportedindex = 0;
t_canvas *canvas = glist_getcanvas(x->x_glist);
***************
*** 165,168 ****
--- 161,175 ----
int inindex = 0;
int selstart = 0, selend = 0;
+ /* if we're a GOP (the new, "goprect" style) borrow the font size
+ from the inside to preserve the spacing */
+ if (pd_class(&x->x_text->te_pd) == canvas_class &&
+ ((t_glist *)(x->x_text))->gl_isgraph &&
+ ((t_glist *)(x->x_text))->gl_goprect)
+ font = glist_getfont((t_glist *)(x->x_text));
+ else font = glist_getfont(x->x_glist);
+ fontwidth = sys_fontwidth(font);
+ fontheight = sys_fontheight(font);
+ findx = (*widthp + (fontwidth/2)) / fontwidth;
+ findy = *heightp / fontheight;
if (x->x_bufsize >= 100)
tempbuf = (char *)t_getbytes(2 * x->x_bufsize + 1);
Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** notes.txt 25 Jun 2005 02:49:15 -0000 1.12
--- notes.txt 2 Jul 2005 05:03:06 -0000 1.13
***************
*** 1,5 ****
---------------- dolist --------------------
done for 0.39:
! arrays are now first-class data
array elements can be clicked on, etc
fixed array onset bug
--- 1,7 ----
---------------- dolist --------------------
done for 0.39:
! At the source level, "regular" arrays and arrays withing data structures
! are now the same thing. The main user-visible effect of this is that now
! "arrays" may be graphed as "bezier curves".
array elements can be clicked on, etc
fixed array onset bug
***************
*** 8,11 ****
--- 10,19 ----
bugfix in number2
plot drawing instructions turn on and off
+ ranges in drawing instructions
+ unify graph properties dialogs
+ GOP font depends on abstraction, not parent
+
+
+ ------------ 0.39 ---------
check:
***************
*** 13,22 ****
blechman patch for s_inter.c
- At the source level, "regular" arrays and arrays withing data structures
- are now the same thing. The main user-visible effect of this is that now
- "arrays" may be graphed as "bezier curves".
-
- ------------ 0.39 ---------
-
garray change:
make a gobj_redraw that schedules the redraw
--- 21,24 ----
***************
*** 32,35 ****
--- 34,38 ----
problems:
+ modal dialogs confuse watchdog
patcher inlets don't deal with scalars (zbug.pd)
Macintosh .pd extension not added to filenames
***************
*** 53,57 ****
dac~/ adc~/ block~ incompatibility
scofo reports error on reading score1.txt
- rfft~ loses nyquist bin -- see "to hell with it" comment in d_fft.c
loading e-mailed patches without removing headers crashes pd
pd $1 bug ($1 is saved as it was evaluated, not as '$1')
--- 56,59 ----
***************
*** 94,98 ****
figure out why Pd sometimes crashes when you close example after adding fields
arrays of non-existent templates crash
- allow field(1,5,0,100) etc. in drawing commands
vget, vset traversal objects
cursor to show (x, y) location
--- 96,99 ----
Index: g_graph.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_graph.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** g_graph.c 18 May 2005 04:28:50 -0000 1.6
--- g_graph.c 2 Jul 2005 05:03:06 -0000 1.7
***************
*** 25,28 ****
--- 25,30 ----
/* -------------------- maintaining the list -------------------- */
+ void canvas_drawredrect(t_canvas *x, int doit);
+
void glist_add(t_glist *x, t_gobj *y)
{
***************
*** 38,41 ****
--- 40,48 ----
if (x->gl_editor && (ob = pd_checkobject(&y->g_pd)))
rtext_new(x, ob);
+ if (x->gl_editor && x->gl_isgraph && !x->gl_goprect)
+ {
+ x->gl_goprect = 1;
+ canvas_drawredrect(x, 1);
+ }
if (glist_isvisible(x))
gobj_vis(y, x, 1);
***************
*** 594,603 ****
/* get the window location in pixels of a "text" object. The
object's x and y positions are in pixels when the glist they're
! in is toplevel. If it's not, we convert to pixels on the parent
! window. */
int text_xpix(t_text *x, t_glist *glist)
{
if (glist->gl_havewindow || !glist->gl_isgraph)
return (x->te_xpix);
else return (glist_xtopixels(glist,
glist->gl_x1 + (glist->gl_x2 - glist->gl_x1) *
--- 601,614 ----
/* get the window location in pixels of a "text" object. The
object's x and y positions are in pixels when the glist they're
! in is toplevel. Otherwise, if it's a new-style graph-on-parent
! (so gl_goprect is set) we use the offset into the framing subrectangle
! as an offset into the parent rectangle. Finally, it might be an old,
! proportional-style GOP. In this case we do a coordinate transformation. */
int text_xpix(t_text *x, t_glist *glist)
{
if (glist->gl_havewindow || !glist->gl_isgraph)
return (x->te_xpix);
+ else if (glist->gl_goprect)
+ return (glist->gl_obj.te_xpix + x->te_xpix - glist->gl_xmargin);
else return (glist_xtopixels(glist,
glist->gl_x1 + (glist->gl_x2 - glist->gl_x1) *
***************
*** 609,612 ****
--- 620,625 ----
if (glist->gl_havewindow || !glist->gl_isgraph)
return (x->te_ypix);
+ else if (glist->gl_goprect)
+ return (glist->gl_obj.te_ypix + x->te_ypix - glist->gl_ymargin);
else return (glist_ytopixels(glist,
glist->gl_y1 + (glist->gl_y2 - glist->gl_y1) *
***************
*** 639,642 ****
--- 652,661 ----
glist_getcanvas(x), oc,
t.tr_lx1, t.tr_ly1, t.tr_lx2, t.tr_ly2);
+ canvas_drawredrect(x, 0);
+ if (x->gl_goprect)
+ {
+ post("draw it");
+ canvas_drawredrect(x, 1);
+ }
}
if (x->gl_owner && glist_isvisible(x->gl_owner))
***************
*** 839,862 ****
int y1 = text_ypix(&x->gl_obj, glist);
int x2, y2;
- #if 0 /* this used to adjust graph size when it was in another graph;
- now we just preserve the size. */
- /* same logic here as in text_xpix(): */
- if (glist->gl_havewindow)
- {
- x2 = x1 + x->gl_pixwidth;
- y2 = y1 + x->gl_pixheight;
- }
- else
- {
- x2 = glist_xtopixels(glist,
- glist->gl_x1 + (glist->gl_x2 - glist->gl_x1) *
- (x->gl_obj.te_xpix + x->gl_pixwidth) /
- (glist->gl_screenx2 - glist->gl_screenx1));
- y2 = glist_ytopixels(glist,
- glist->gl_y1 + (glist->gl_y2 - glist->gl_y1) *
- (x->gl_obj.te_ypix + x->gl_pixheight) /
- (glist->gl_screeny2 - glist->gl_screeny1));
- }
- #endif
x2 = x1 + x->gl_pixwidth;
y2 = y1 + x->gl_pixheight;
--- 858,861 ----
***************
*** 891,912 ****
y2 = y22;
}
! /* lie about whether we have our own window to affect gobj_getrect
! calls below. (LATER add argument to gobj_getrect()?) */
! hadwindow = x->gl_havewindow;
! x->gl_havewindow = 0;
! for (g = x->gl_list; g; g = g->g_next)
! if ((!(ob = pd_checkobject(&g->g_pd))) || text_shouldvis(ob, x))
{
! /* don't do this for arrays, just let them hang outsize the
! box. */
! if (pd_class(&g->g_pd) == garray_class)
! continue;
! gobj_getrect(g, x, &x21, &y21, &x22, &y22);
! if (x22 > x2)
! x2 = x22;
! if (y22 > y2)
! y2 = y22;
}
- x->gl_havewindow = hadwindow;
}
else text_widgetbehavior.w_getrectfn(z, glist, &x1, &y1, &x2, &y2);
--- 890,916 ----
y2 = y22;
}
! if (!x->gl_goprect)
{
! /* expand the rectangle to fit in text objects; this applies only
! to the old (0.37) graph-on-parent behavior. */
! /* lie about whether we have our own window to affect gobj_getrect
! calls below. */
! hadwindow = x->gl_havewindow;
! x->gl_havewindow = 0;
! for (g = x->gl_list; g; g = g->g_next)
! if ((!(ob = pd_checkobject(&g->g_pd))) || text_shouldvis(ob, x))
! {
! /* don't do this for arrays, just let them hang outside the
! box. */
! if (pd_class(&g->g_pd) == garray_class)
! continue;
! gobj_getrect(g, x, &x21, &y21, &x22, &y22);
! if (x22 > x2)
! x2 = x22;
! if (y22 > y2)
! y2 = y22;
! }
! x->gl_havewindow = hadwindow;
}
}
else text_widgetbehavior.w_getrectfn(z, glist, &x1, &y1, &x2, &y2);
***************
*** 1069,1089 ****
};
- void graph_properties(t_gobj *z, t_glist *owner)
- {
- t_glist *x = (t_glist *)z;
- {
- t_gobj *y;
- char graphbuf[200];
- sprintf(graphbuf, "pdtk_graph_dialog %%s %g %g %g %g %d %d\n",
- x->gl_x1, x->gl_y1, x->gl_x2, x->gl_y2,
- x->gl_pixwidth, x->gl_pixheight);
- gfxstub_new(&x->gl_pd, x, graphbuf);
-
- for (y = x->gl_list; y; y = y->g_next)
- if (pd_class(&y->g_pd) == garray_class)
- garray_properties((t_garray *)y);
- }
- }
-
/* find the graph most recently added to this glist;
if none exists, return 0. */
--- 1073,1076 ----
***************
*** 1098,1124 ****
}
- /* message back from dialog GUI to set parameters. Args are:
- 1-4: bounds in our coordinates; 5-6: size in parent */
- static void graph_dialog(t_glist *x, t_symbol *s, int argc, t_atom *argv)
- {
- t_float x1 = atom_getfloatarg(0, argc, argv);
- t_float y1 = atom_getfloatarg(1, argc, argv);
- t_float x2 = atom_getfloatarg(2, argc, argv);
- t_float y2 = atom_getfloatarg(3, argc, argv);
- t_float xpix = atom_getfloatarg(4, argc, argv);
- t_float ypix = atom_getfloatarg(5, argc, argv);
- if (x1 != x->gl_x1 || x2 != x->gl_x2 ||
- y1 != x->gl_y1 || y2 != x->gl_y2)
- graph_bounds(x, x1, y1, x2, y2);
- if (xpix != x->gl_pixwidth || ypix != x->gl_pixheight)
- {
- x->gl_pixwidth = xpix;
- x->gl_pixheight = ypix;
- glist_redraw(x);
- if (x->gl_owner)
- canvas_fixlinesfor(x->gl_owner, &x->gl_obj);
- }
- }
-
extern void canvas_menuarray(t_glist *canvas);
--- 1085,1088 ----
***************
*** 1140,1145 ****
class_addmethod(canvas_class, (t_method)canvas_menuarray,
gensym("menuarray"), A_NULL);
- class_addmethod(canvas_class, (t_method)graph_dialog, gensym("dialog"),
- A_GIMME, 0);
class_addmethod(canvas_class, (t_method)glist_arraydialog,
gensym("arraydialog"), A_SYMBOL, A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
--- 1104,1107 ----
Index: g_readwrite.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_readwrite.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** g_readwrite.c 28 Nov 2004 21:20:42 -0000 1.4
--- g_readwrite.c 2 Jul 2005 05:03:06 -0000 1.5
***************
*** 598,606 ****
if (x->gl_isgraph || x->gl_x1 || x->gl_y1 ||
x->gl_x2 != 1 || x->gl_y2 != 1 || x->gl_pixwidth || x->gl_pixheight)
! binbuf_addv(b, "ssfffffff;", gensym("#X"), gensym("coords"),
x->gl_x1, x->gl_y1,
x->gl_x2, x->gl_y2,
(float)x->gl_pixwidth, (float)x->gl_pixheight,
(float)x->gl_isgraph);
}
--- 598,618 ----
if (x->gl_isgraph || x->gl_x1 || x->gl_y1 ||
x->gl_x2 != 1 || x->gl_y2 != 1 || x->gl_pixwidth || x->gl_pixheight)
! {
! if (x->gl_isgraph && x->gl_goprect)
! /* if we have a graph-on-parent rectangle, we're new style.
! The format is arranged so
! that old versions of Pd can at least do something with it. */
! binbuf_addv(b, "ssfffffffff;", gensym("#X"), gensym("coords"),
! x->gl_x1, x->gl_y1,
! x->gl_x2, x->gl_y2,
! (float)x->gl_pixwidth, (float)x->gl_pixheight,
! 1., (float)x->gl_xmargin, (float)x->gl_ymargin);
! /* otherwise write in 0.38-compatible form */
! else binbuf_addv(b, "ssfffffff;", gensym("#X"), gensym("coords"),
x->gl_x1, x->gl_y1,
x->gl_x2, x->gl_y2,
(float)x->gl_pixwidth, (float)x->gl_pixheight,
(float)x->gl_isgraph);
+ }
}
Index: g_editor.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** g_editor.c 18 May 2005 04:28:50 -0000 1.7
--- g_editor.c 2 Jul 2005 05:03:06 -0000 1.8
***************
*** 65,69 ****
--- 65,87 ----
{
if (x->g_pd->c_wb && x->g_pd->c_wb->w_visfn)
+ {
+ if (!glist->gl_havewindow && glist->gl_isgraph && glist->gl_goprect &&
+ glist->gl_owner && (pd_class(&glist->gl_pd) != garray_class))
+ {
+ /* if we're graphing-on-parent and the object falls outside the
+ graph rectangle, don't draw it. */
+ int x1, y1, x2, y2, gx1, gy1, gx2, gy2, m;
+ gobj_getrect(&glist->gl_gobj, glist->gl_owner, &x1, &y1, &x2, &y2);
+ if (x1 > x2)
+ m = x1, x1 = x2, x2 = m;
+ if (y1 > y2)
+ m = y1, y1 = y2, x2 = m;
+ gobj_getrect(x, glist, &gx1, &gy1, &gx2, &gy2);
+ if (gx1 < x1 || gx1 > x2 || gx2 < x1 || gx2 > x2 ||
+ gy1 < y1 || gy1 > y2 || gy2 < y1 || gy2 > y2)
+ return;
+ }
(*x->g_pd->c_wb->w_visfn)(x, glist, flag);
+ }
}
***************
*** 788,805 ****
}
! /* tell GUI to create a properties dialog on the canvas. We tell
! the user the negative of the "pixel" y scale to make it appear to grow
! naturally upward, whereas pixels grow downward. */
! static void canvas_properties(t_glist *x)
! {
! char graphbuf[200];
! sprintf(graphbuf, "pdtk_canvas_dialog %%s %g %g %g %g \n",
! glist_dpixtodx(x, 1), -glist_dpixtody(x, 1),
! (float)glist_isgraph(x), (float)x->gl_stretch);
! gfxstub_new(&x->gl_pd, x, graphbuf);
! }
!
!
! void canvas_setgraph(t_glist *x, int flag)
{
if (!flag && glist_isgraph(x))
--- 806,812 ----
}
! /* set a canvas up as a graph-on-parent. Set reasonable defaults for
! any missing paramters and redraw things if necessary. */
! void canvas_setgraph(t_glist *x, int flag, int nogoprect)
{
if (!flag && glist_isgraph(x))
***************
*** 825,830 ****
gobj_vis(&x->gl_gobj, x->gl_owner, 0);
x->gl_isgraph = 1;
! /* if (x->gl_owner && glist_isvisible(x->gl_owner))
! canvas_vis(x, 1); */
if (x->gl_loading && x->gl_owner && glist_isvisible(x->gl_owner))
canvas_create_editor(x, 1);
--- 832,847 ----
gobj_vis(&x->gl_gobj, x->gl_owner, 0);
x->gl_isgraph = 1;
! if (!nogoprect && !x->gl_goprect)
! {
! t_gobj *g;
! for (g = x->gl_list; g; g = g->g_next)
! if (pd_checkobject(&g->g_pd))
! {
! x->gl_goprect = 1;
! break;
! }
! }
! if (glist_isvisible(x) && x->gl_goprect)
! glist_redraw(x);
if (x->gl_loading && x->gl_owner && glist_isvisible(x->gl_owner))
canvas_create_editor(x, 1);
***************
*** 837,846 ****
}
/* called from the gui when "OK" is selected on the canvas properties
dialog. Again we negate "y" scale. */
! static void canvas_donecanvasdialog(t_glist *x, t_floatarg xperpix,
! t_floatarg yperpix, t_floatarg fgraphme)
{
! int graphme = (fgraphme != 0), redraw = 0;
yperpix = -yperpix;
if (xperpix == 0)
--- 854,908 ----
}
+ /* tell GUI to create a properties dialog on the canvas. We tell
+ the user the negative of the "pixel" y scale to make it appear to grow
+ naturally upward, whereas pixels grow downward. */
+ void canvas_properties(t_glist *x)
+ {
+ char graphbuf[200];
+ if (glist_isgraph(x) != 0)
+ sprintf(graphbuf,
+ "pdtk_canvas_dialog %%s %g %g %d %g %g %g %g %d %d %d %d\n",
+ 0., 0.,
+ 1,
+ x->gl_x1, x->gl_y1, x->gl_x2, x->gl_y2,
+ (int)x->gl_pixwidth, (int)x->gl_pixheight,
+ (int)x->gl_xmargin, (int)x->gl_ymargin);
+ else sprintf(graphbuf,
+ "pdtk_canvas_dialog %%s %g %g %d %g %g %g %g %d %d %d %d\n",
+ glist_dpixtodx(x, 1), -glist_dpixtody(x, 1),
+ 0,
+ 0., -1., 1., 1.,
+ (int)x->gl_pixwidth, (int)x->gl_pixheight,
+ (int)x->gl_xmargin, (int)x->gl_ymargin);
+ gfxstub_new(&x->gl_pd, x, graphbuf);
+ }
+
/* called from the gui when "OK" is selected on the canvas properties
dialog. Again we negate "y" scale. */
! static void canvas_donecanvasdialog(t_glist *x,
! t_symbol *s, int argc, t_atom *argv)
{
!
!
! float xperpix, yperpix, x1, y1, x2, y2, xpix, ypix, xmargin, ymargin;
! int graphme, redraw = 0;
!
! xperpix = atom_getfloatarg(0, argc, argv);
! yperpix = atom_getfloatarg(1, argc, argv);
! graphme = (atom_getfloatarg(2, argc, argv) != 0);
! x1 = atom_getfloatarg(3, argc, argv);
! y1 = atom_getfloatarg(4, argc, argv);
! x2 = atom_getfloatarg(5, argc, argv);
! y2 = atom_getfloatarg(6, argc, argv);
! xpix = atom_getfloatarg(7, argc, argv);
! ypix = atom_getfloatarg(8, argc, argv);
! xmargin = atom_getfloatarg(9, argc, argv);
! ymargin = atom_getfloatarg(10, argc, argv);
!
! x->gl_pixwidth = xpix;
! x->gl_pixheight = ypix;
! x->gl_xmargin = xmargin;
! x->gl_ymargin = ymargin;
!
yperpix = -yperpix;
if (xperpix == 0)
***************
*** 848,854 ****
if (yperpix == 0)
yperpix = 1;
! canvas_setgraph(x, graphme);
! if (!x->gl_isgraph && (xperpix != glist_dpixtodx(x, 1)))
{
if (xperpix > 0)
{
--- 910,927 ----
if (yperpix == 0)
yperpix = 1;
!
! if (graphme)
{
+ if (x1 != x2)
+ x->gl_x1 = x1, x->gl_x2 = x2;
+ else x->gl_x1 = 0, x->gl_x2 = 1;
+ if (y1 != y2)
+ x->gl_y1 = y1, x->gl_y2 = y2;
+ else x->gl_y1 = 0, x->gl_y2 = 1;
+ }
+ else
+ {
+ if (xperpix != glist_dpixtodx(x, 1) || yperpix != glist_dpixtody(x, 1))
+ redraw = 1;
if (xperpix > 0)
{
***************
*** 861,868 ****
x->gl_x2 = x->gl_x1 + xperpix;
}
- redraw = 1;
- }
- if (!x->gl_isgraph && (yperpix != glist_dpixtody(x, 1)))
- {
if (yperpix > 0)
{
--- 934,937 ----
***************
*** 875,882 ****
x->gl_y2 = x->gl_y1 + yperpix;
}
- redraw = 1;
}
! if (redraw)
! canvas_redraw(x);
}
--- 944,951 ----
x->gl_y2 = x->gl_y1 + yperpix;
}
}
! /* LATER avoid doing 2 redraws here (possibly one inside setgraph) */
! canvas_setgraph(x, graphme, 0);
! canvas_redraw(x);
}
***************
*** 2317,2321 ****
gensym("done-popup"), A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
class_addmethod(canvas_class, (t_method)canvas_donecanvasdialog,
! gensym("donecanvasdialog"), A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
class_addmethod(canvas_class, (t_method)glist_arraydialog,
gensym("arraydialog"), A_SYMBOL, A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
--- 2386,2390 ----
gensym("done-popup"), A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
class_addmethod(canvas_class, (t_method)canvas_donecanvasdialog,
! gensym("donecanvasdialog"), A_GIMME, A_NULL);
class_addmethod(canvas_class, (t_method)glist_arraydialog,
gensym("arraydialog"), A_SYMBOL, A_FLOAT, A_FLOAT, A_FLOAT, A_NULL);
Index: g_template.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_template.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** g_template.c 25 Jun 2005 02:49:15 -0000 1.8
--- g_template.c 2 Jul 2005 05:03:06 -0000 1.9
***************
*** 1324,1327 ****
--- 1324,1328 ----
void plot_float(t_plot *x, t_floatarg f)
{
+ int viswas;
if (x->x_vis.fd_type != A_FLOAT || x->x_vis.fd_var)
{
***************
*** 1329,1333 ****
return;
}
! int viswas = (x->x_vis.fd_un.fd_float != 0);
if ((f != 0 && viswas) || (f == 0 && !viswas))
--- 1330,1334 ----
return;
}
! viswas = (x->x_vis.fd_un.fd_float != 0);
if ((f != 0 && viswas) || (f == 0 && !viswas))