ivtools-patch Mailing List for ivtools (Page 4)
Brought to you by:
johnston
You can subscribe to this list here.
| 1999 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2000 |
Jan
(17) |
Feb
(14) |
Mar
(7) |
Apr
(7) |
May
(20) |
Jun
(18) |
Jul
(5) |
Aug
(9) |
Sep
(4) |
Oct
(2) |
Nov
(2) |
Dec
(1) |
| 2001 |
Jan
(3) |
Feb
(2) |
Mar
(5) |
Apr
(7) |
May
(9) |
Jun
(15) |
Jul
(10) |
Aug
(2) |
Sep
(10) |
Oct
(15) |
Nov
(14) |
Dec
(2) |
| 2002 |
Jan
(8) |
Feb
(13) |
Mar
(10) |
Apr
(3) |
May
(2) |
Jun
(7) |
Jul
(5) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(10) |
Dec
|
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
(4) |
Nov
(1) |
Dec
(3) |
| 2004 |
Jan
(2) |
Feb
(6) |
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2005 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(4) |
Nov
(1) |
Dec
|
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
| 2010 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <ivt...@li...> - 2002-01-15 00:36:54
|
Patch: ivtools-020114-johnston-021
For: ivtools-1.0.1
Author: joh...@us...
Subject: fixes for compiling with Cygwin
Requires:
This is an intermediate patch to ivtools-1.0.1. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- changes required to get things compiling with Cygwin under Windows 2K
Index: src_iv/Imakefile
diff -c src_iv/Imakefile:1.1 src_iv/Imakefile:1.2
*** src_iv/Imakefile:1.1 Fri Nov 2 13:04:54 2001
--- src/IV/Imakefile Mon Jan 14 16:28:11 2002
***************
*** 65,71 ****
InterViewsObjFlags(dialogs,$(KIT_CCFLAGS))
InterViewsObj(fbrowser)
InterViewsObj(fchooser)
! InterViewsObj(field)
InterViewsObj(geometry)
InterViewsObj(glyph)
InterViewsObj(group)
--- 65,71 ----
InterViewsObjFlags(dialogs,$(KIT_CCFLAGS))
InterViewsObj(fbrowser)
InterViewsObj(fchooser)
! InterViewsObjFlags(field,-O2)
InterViewsObj(geometry)
InterViewsObj(glyph)
InterViewsObj(group)
Index: src_interviews/psfont.c
diff -c src_interviews/psfont.c:1.1 src_interviews/psfont.c:1.2
*** src_interviews/psfont.c:1.1 Fri Nov 2 13:05:00 2001
--- src/InterViews/psfont.c Mon Jan 14 16:28:13 2002
***************
*** 23,29 ****
*/
/*
! * PSFont - use PostScript font metrics
*/
#include <InterViews/psfont.h>
--- 23,29 ----
*/
/*
! * iv_PSFont - use PostScript font metrics
*/
#include <InterViews/psfont.h>
***************
*** 40,46 ****
class PSFontImpl {
private:
! friend class PSFont;
char* name;
char* encoding;
--- 40,46 ----
class PSFontImpl {
private:
! friend class PSFont_31;
char* name;
char* encoding;
***************
*** 50,56 ****
static char* psfile(const char* name);
};
! PSFont::PSFont(
const char* psname, Coord size, const char* name, float scale
) : Font(name, scale) {
PSFontImpl* p = new PSFontImpl;
--- 50,56 ----
static char* psfile(const char* name);
};
! PSFont_31::PSFont_31(
const char* psname, Coord size, const char* name, float scale
) : Font(name, scale) {
PSFontImpl* p = new PSFontImpl;
***************
*** 83,101 ****
delete metrics_file;
}
! PSFont::~PSFont() {
delete impl_->name;
delete impl_->encoding;
delete impl_;
}
! const char* PSFont::name() const { return impl_->name; }
! const char* PSFont::encoding() const { return impl_->encoding; }
! Coord PSFont::size() const { return impl_->size; }
! Coord PSFont::width(long c) const { return impl_->widths[c]; }
! Coord PSFont::width(const char* s, int n) const { return Font::width(s, n); }
! boolean PSFont::exists(const char* psname) {
char* metrics_file = PSFontImpl::psfile(psname);
FILE* f = fopen(metrics_file, "r");
delete metrics_file;
--- 83,101 ----
delete metrics_file;
}
! PSFont_31::~PSFont_31() {
delete impl_->name;
delete impl_->encoding;
delete impl_;
}
! const char* PSFont_31::name() const { return impl_->name; }
! const char* PSFont_31::encoding() const { return impl_->encoding; }
! Coord PSFont_31::size() const { return impl_->size; }
! Coord PSFont_31::width(long c) const { return impl_->widths[c]; }
! Coord PSFont_31::width(const char* s, int n) const { return Font::width(s, n); }
! boolean PSFont_31::exists(const char* psname) {
char* metrics_file = PSFontImpl::psfile(psname);
FILE* f = fopen(metrics_file, "r");
delete metrics_file;
Index: src_iv-2_6/rubrect.c
diff -c src_iv-2_6/rubrect.c:1.1 src_iv-2_6/rubrect.c:1.2
*** src_iv-2_6/rubrect.c:1.1 Fri Nov 2 13:05:04 2001
--- src/IV-2_6/rubrect.c Mon Jan 14 16:28:15 2002
***************
*** 33,39 ****
#include <stdlib.h>
#ifndef apollo
#if defined(__CYGWIN__)
! #include <mingw32/float.h>
#else
#include <math.h>
#define MAXFLOAT HUGE_VAL
--- 33,39 ----
#include <stdlib.h>
#ifndef apollo
#if defined(__CYGWIN__)
! #include <float.h>
#else
#include <math.h>
#define MAXFLOAT HUGE_VAL
Index: IVGlyph/idraw.c
diff -c IVGlyph/idraw.c:1.1 IVGlyph/idraw.c:1.2
*** IVGlyph/idraw.c:1.1 Fri Nov 2 13:05:31 2001
--- src/IVGlyph/idraw.c Mon Jan 14 16:28:19 2002
***************
*** 478,486 ****
NullTerminatedString psname_nt(psname);
float pointsize;
read(pointsize);
! if (PSFont::exists(psname_nt.string())) {
NullTerminatedString s_nt(s);
! return new PSFont(psname_nt.string(), pointsize, s_nt.string(), 1.0)
;
}
return WidgetKit::instance()->font();
--- 478,486 ----
NullTerminatedString psname_nt(psname);
float pointsize;
read(pointsize);
! if (PSFont_31::exists(psname_nt.string())) {
NullTerminatedString s_nt(s);
! return new PSFont_31(psname_nt.string(), pointsize, s_nt.string(), 1.0)
;
}
return WidgetKit::instance()->font();
Index: examples3.1_ips/idraw.c
diff -c examples3.1_ips/idraw.c:1.1 examples3.1_ips/idraw.c:1.2
*** examples3.1_ips/idraw.c:1.1 Fri Nov 2 13:06:25 2001
--- src/glyphs/examples3.1/ips/idraw.c Mon Jan 14 16:28:29 2002
***************
*** 444,452 ****
NullTerminatedString psname_nt(psname);
float pointsize;
read(pointsize);
! if (PSFont::exists(psname_nt.string())) {
NullTerminatedString s_nt(s);
! return new PSFont(psname_nt.string(), pointsize, s_nt.string(), 1.0);
}
String default_font("fixed");
Session::instance()->style()->find_attribute("font", default_font);
--- 444,452 ----
NullTerminatedString psname_nt(psname);
float pointsize;
read(pointsize);
! if (PSFont_31::exists(psname_nt.string())) {
NullTerminatedString s_nt(s);
! return new PSFont_31(psname_nt.string(), pointsize, s_nt.string(), 1.0);
}
String default_font("fixed");
Session::instance()->style()->find_attribute("font", default_font);
Index: include_interviews/psfont.h
diff -c include_interviews/psfont.h:1.1 include_interviews/psfont.h:1.2
*** include_interviews/psfont.h:1.1 Fri Nov 2 13:07:34 2001
--- src/include/InterViews/psfont.h Mon Jan 14 16:28:39 2002
***************
*** 23,29 ****
*/
/*
! * PSFont - use PostScript font metrics
*/
#ifndef iv_psfont_h
--- 23,29 ----
*/
/*
! * iv_PSFont - use PostScript font metrics
*/
#ifndef iv_psfont_h
***************
*** 35,44 ****
class PSFontImpl;
! class PSFont : public Font {
public:
! PSFont(const char* psname, Coord size, const char* name, float scale);
! virtual ~PSFont();
static boolean exists(const char* psname);
--- 35,44 ----
class PSFontImpl;
! class PSFont_31 : public Font {
public:
! PSFont_31(const char* psname, Coord size, const char* name, float scale);
! virtual ~PSFont_31();
static boolean exists(const char* psname);
Index: config_ivtools/site.def.CYGWIN
diff -c config_ivtools/site.def.CYGWIN:1.1 config_ivtools/site.def.CYGWIN:1.2
*** config_ivtools/site.def.CYGWIN:1.1 Fri Nov 2 13:08:11 2001
--- config/site.def.CYGWIN Mon Jan 14 16:28:47 2002
***************
*** 5,10 ****
--- 5,14 ----
#undef ExtraCCLdLibs
#define ExtraCCLdLibs -lstdc++ -lm
+ /* permissive for X11R6.4 include files */
+ #undef ExtraCCFlags
+ #define ExtraCCFlags -fpermissive
+
/* file output by configure script */
#include "config-default-gcc.defs"
*** /dev/null Mon Jan 14 16:28:50 PST 2002
--- patches/ivtools-020114-johnston-021
*************** patches/ivtools-020114-johnston-021
*** 0 ****
--- 1 ----
+ ivtools-020114-johnston-021
|
|
From: <ivt...@li...> - 2002-01-15 00:08:11
|
Patch: ivtools-020114-johnston-020
For: ivtools-1.0.1
Author: joh...@us...
Subject: add -comdraw_off argument to comdraw (to disable stdin interpreter)
Requires:
This is an intermediate patch to ivtools-1.0.1. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add -comdraw_off argument to comdraw to disable a comterp interpreter
on stdin. Useful when supplying "comdraw -" as the command line for
printing from a browser, i.e. "comdraw -comdraw_off -".
Index: comdraw/main.c
diff -c comdraw/main.c:1.2 comdraw/main.c:1.3
*** comdraw/main.c:1.2 Wed Jan 9 09:06:25 2002
--- src/comdraw/main.c Mon Jan 14 15:57:06 2002
***************
*** 161,167 ****
{ "*twidth", "512" },
{ "*zoomer_off", "false" },
{ "*opaque_off", "false" },
! { "*stripped", "false" },
#ifdef HAVE_ACE
{ "*import", "20001" },
{ "*comdraw", "20002" },
--- 161,168 ----
{ "*twidth", "512" },
{ "*zoomer_off", "false" },
{ "*opaque_off", "false" },
! { "*stripped", "false" },
! { "*comdraw_off", "false" },
#ifdef HAVE_ACE
{ "*import", "20001" },
{ "*comdraw", "20002" },
***************
*** 206,211 ****
--- 207,213 ----
{ "-opaque_off", "*opaque_off", OptionValueImplicit, "true" },
{ "-opoff", "*opaque_off", OptionValueImplicit, "true" },
{ "-stripped", "*stripped", OptionValueImplicit, "true" },
+ { "-comdraw_off", "*comdraw_off", OptionValueImplicit, "true" },
#ifdef HAVE_ACE
{ "-import", "*import", OptionValueNext },
{ "-comdraw", "*comdraw", OptionValueNext },
***************
*** 221,228 ****
#ifdef HAVE_ACE
static char* usage =
! "Usage: comdraw [any idraw parameter] [-comdraw port] [-color5] \n\
! [-color6] [-import portnum] [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] \n\
[-pagecols|-ncols n] [-pagerows|-nrows n] [-panner_off|-poff] \n\
[-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc] \n\
[-rampsize n ] [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-stripped]\n\
--- 223,230 ----
#ifdef HAVE_ACE
static char* usage =
! "Usage: comdraw [any idraw parameter] [-comdraw port] [-comdraw_off] [-color5] \n\
! [-color6] [-import portnum] [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] \n\
[-pagecols|-ncols n] [-pagerows|-nrows n] [-panner_off|-poff] \n\
[-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc] \n\
[-rampsize n ] [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-stripped]\n\
***************
*** 230,237 ****
[-wbhost host] [-wbmaster] [-wbslave] [-wbport port] [-zoomer_off|-zoff] [file]";
#else
static char* usage =
! "Usage: comdraw [any idraw parameter] [-color5] \n\
! [-color6] [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] \n\
[-pagecols|-ncols n] [-pagerows|-nrows n] [-panner_off|-poff] \n\
[-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc] \n\
[-rampsize n ] [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-stripped]\n\
--- 232,239 ----
[-wbhost host] [-wbmaster] [-wbslave] [-wbport port] [-zoomer_off|-zoff] [file]";
#else
static char* usage =
! "Usage: comdraw [any idraw parameter] [-color5] [-color6] \n\
! [-comdraw_off] [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] \n\
[-pagecols|-ncols n] [-pagerows|-nrows n] [-panner_off|-poff] \n\
[-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc] \n\
[-rampsize n ] [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-stripped]\n\
***************
*** 310,325 ****
unidraw->Open(ed);
#ifdef HAVE_ACE
/* Start up one on stdin */
! UnidrawComterpHandler* stdin_handler = new UnidrawComterpHandler();
#if 0
! if (ACE::register_stdin_handler(stdin_handler, COMTERP_REACTOR::instance(), nil) == -1)
#else
! if (COMTERP_REACTOR::instance()->register_handler(0, stdin_handler,
ACE_Event_Handler::READ_MASK)==-1)
#endif
! cerr << "comdraw: unable to open stdin with ACE\n";
! ed->SetComTerp(stdin_handler->comterp());
#endif
fprintf(stderr, "ivtools-%s comdraw: see \"man comdraw\" or type help here for command info\n", VersionString);
--- 312,331 ----
unidraw->Open(ed);
#ifdef HAVE_ACE
+
/* Start up one on stdin */
! const char* comdraw_off_str = unidraw->GetCatalog()->GetAttribute("comdraw_off");
! if (!comdraw_off_str || strcmp(comdraw_off_str, "false")==0) {
! UnidrawComterpHandler* stdin_handler = new UnidrawComterpHandler();
#if 0
! if (ACE::register_stdin_handler(stdin_handler, COMTERP_REACTOR::instance(), nil) == -1)
#else
! if (COMTERP_REACTOR::instance()->register_handler(0, stdin_handler,
ACE_Event_Handler::READ_MASK)==-1)
#endif
! cerr << "comdraw: unable to open stdin with ACE\n";
! ed->SetComTerp(stdin_handler->comterp());
! }
#endif
fprintf(stderr, "ivtools-%s comdraw: see \"man comdraw\" or type help here for command info\n", VersionString);
*** /dev/null Mon Jan 14 15:57:17 PST 2002
--- patches/ivtools-020114-johnston-020
*************** patches/ivtools-020114-johnston-020
*** 0 ****
--- 1 ----
+ ivtools-020114-johnston-020
|
|
From: <ivt...@li...> - 2002-01-11 00:18:31
|
Patch: ivtools-020110-johnston-019 For: ivtools-1.0.1 Author: joh...@us... Subject: keep graphdraw compiling without ACE Requires: This is an intermediate patch to ivtools-1.0.1. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - keep graphdraw compiling without ACE - get the year right in the CHANGES file for release 1.0.1 Index: top_ivtools/CHANGES diff -c top_ivtools/CHANGES:1.2 top_ivtools/CHANGES:1.3 *** top_ivtools/CHANGES:1.2 Wed Jan 9 16:35:40 2002 --- ./CHANGES Thu Jan 10 16:13:47 2002 *************** *** 1,4 **** ! January 9th, 2001 ivtools-1.0.1 - add comdraw funcs to poke (grey-level) pixel values into a raster, and return the horizontal and vertical extent of the raster: --- 1,4 ---- ! January 9th, 2002 ivtools-1.0.1 - add comdraw funcs to poke (grey-level) pixel values into a raster, and return the horizontal and vertical extent of the raster: Index: graphdraw/main.c diff -c graphdraw/main.c:1.2 graphdraw/main.c:1.3 *** graphdraw/main.c:1.2 Wed Jan 9 09:06:30 2002 --- src/graphdraw/main.c Thu Jan 10 16:14:05 2002 *************** *** 198,203 **** --- 198,204 ---- [-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc ] \n\ [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-zoomer_off|-zoff] [file]"; #else + static char* usage = "Usage: graphdraw [any idraw parameter] [-color5] [-color6] \n\ [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] [-pagecols|-ncols n] \n\ [-pagerows|-nrows n] [-panner_off|-poff] \n\ *** /dev/null Thu Jan 10 16:14:13 PST 2002 --- patches/ivtools-020110-johnston-019 *************** patches/ivtools-020110-johnston-019 *** 0 **** --- 1 ---- + ivtools-020110-johnston-019 |
|
From: <ivt...@li...> - 2002-01-09 23:27:02
|
Patch: ivtools-020109-johnston-017
For: ivtools-1.0
Author: joh...@us...
Subject: streamline comterp error handling
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- fix up drawing editor stdin command interpreters without ACE, so
that they are all there, and they handle multiple expressions on
a single command line.
- streamline comterp error handling, by avoiding any error file I/O
operations if no error messages have been accrued, and the addition
of an err_cnt() function that tells how many messages have been
accrued.
Index: ComUtil/comutil.arg
diff -c ComUtil/comutil.arg:1.1 ComUtil/comutil.arg:1.2
*** ComUtil/comutil.arg:1.1 Tue Nov 13 15:47:27 2001
--- src/ComUtil/comutil.arg Wed Jan 9 13:55:35 2002
***************
*** 80,85 ****
--- 80,86 ----
void err_clear();
void err_level(unsigned level);
FILE *err_fileio();
+ int err_cnt();
/* COMERR.C */
char *comerr_read(unsigned errnum);
void comerr_set(unsigned errnum,unsigned errlen);
Index: ComUtil/errsys.c
diff -c ComUtil/errsys.c:1.2 ComUtil/errsys.c:1.3
*** ComUtil/errsys.c:1.2 Thu Nov 29 13:33:57 2001
--- src/ComUtil/errsys.c Wed Jan 9 13:55:35 2002
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 1993-1995 Vectaport Inc.
* Copyright (c) 1989 Triple Vision, Inc.
*
***************
*** 28,34 ****
void err_set(), void err_get(),
void err_print(), void err_str(),
void err_clear(), void err_level(),
! FILE *err_fileio()
History: Written by Scott E. Johnston, March 1989
--- 29,35 ----
void err_set(), void err_get(),
void err_print(), void err_str(),
void err_clear(), void err_level(),
! FILE *err_fileio(), int err_cnt()
History: Written by Scott E. Johnston, March 1989
***************
*** 105,111 ****
See Also: err_read, err_set, err_get, err_print, err_str, err_clear,
! err_level, err_fileio
!*/
#undef TITLE
--- 106,112 ----
See Also: err_read, err_set, err_get, err_print, err_str, err_clear,
! err_level, err_fileio, err_cnt
!*/
#undef TITLE
***************
*** 207,213 ****
See Also: err_readfile, err_open, err_set, err_get, err_print, err_str,
! err_clear, err_level, err_fileio
!*/
--- 208,214 ----
See Also: err_readfile, err_open, err_set, err_get, err_print, err_str,
! err_clear, err_level, err_fileio, err_cnt
!*/
***************
*** 267,273 ****
See Also: err_open, err_read, err_get, err_print, err_str, err_clear,
! err_level, err_fileio
!*/
--- 268,274 ----
See Also: err_open, err_read, err_get, err_print, err_str, err_clear,
! err_level, err_fileio, err_cnt
!*/
***************
*** 333,339 ****
See Also: err_open, err_read, err_set, err_print, err_str, err_clear,
! err_level, err_fileio
!*/
--- 334,340 ----
See Also: err_open, err_read, err_set, err_print, err_str, err_clear,
! err_level, err_fileio, err_cnt
!*/
***************
*** 393,399 ****
See Also: err_open, err_read, err_set, err_get, err_clear, err_level,
! err_fileio
!*/
--- 394,400 ----
See Also: err_open, err_read, err_set, err_get, err_clear, err_level,
! err_fileio, err_cnt
!*/
***************
*** 402,416 ****
char *ptr;
char buffer[BUFSIZ];
/* Rewind error I/O file */
if( ErrorIOFile == NULL )
return;
rewind( ErrorIOFile );
- /* Abort if no errors have occurred */
- if( TopError == -1 )
- return;
-
/* Print overflow messages */
if( TooManyErrors ) {
fprintf( outstream, "*** Warning: Error depth greater than %d ***\n",
--- 403,417 ----
char *ptr;
char buffer[BUFSIZ];
+ /* Abort if no errors have occurred */
+ if( TopError == -1 )
+ return;
+
/* Rewind error I/O file */
if( ErrorIOFile == NULL )
return;
rewind( ErrorIOFile );
/* Print overflow messages */
if( TooManyErrors ) {
fprintf( outstream, "*** Warning: Error depth greater than %d ***\n",
***************
*** 501,507 ****
See Also: err_open, err_read, err_set, err_get, err_print, err_clear,
! err_level, err_fileio
!*/
--- 502,508 ----
See Also: err_open, err_read, err_set, err_get, err_print, err_clear,
! err_level, err_fileio, err_cnt
!*/
***************
*** 510,524 ****
char *ptr;
char buffer[bufsiz];
/* Rewind error I/O file */
if( ErrorIOFile == NULL )
return;
rewind( ErrorIOFile );
- /* Abort if no errors have occurred */
- if( TopError == -1 )
- return;
-
/* Print overflow messages */
if( TooManyErrors ) {
sprintf( errbuf, "*** Warning: Error depth greater than %d ***\n",
--- 511,525 ----
char *ptr;
char buffer[bufsiz];
+ /* Abort if no errors have occurred */
+ if( TopError == -1 )
+ return;
+
/* Rewind error I/O file */
if( ErrorIOFile == NULL )
return;
rewind( ErrorIOFile );
/* Print overflow messages */
if( TooManyErrors ) {
sprintf( errbuf, "*** Warning: Error depth greater than %d ***\n",
***************
*** 600,606 ****
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_level, err_fileio
!*/
--- 601,607 ----
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_level, err_fileio, err_cnt
!*/
***************
*** 663,669 ****
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_clear, err_fileio
!*/
--- 664,670 ----
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_clear, err_fileio, err_cnt
!*/
***************
*** 709,715 ****
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_clear, err_level
!*/
--- 710,716 ----
See Also: err_open, err_read, err_set, err_get, err_print, err_str,
! err_clear, err_level, err_cnt
!*/
***************
*** 732,737 ****
--- 733,776 ----
return ErrorIOFile;
#endif
+ }
+
+
+
+ /*!
+
+ err_cnt Return current count of error messages
+
+
+ Summary:
+
+ #include <nsfcfg.h>
+ #include <ComUtil/comutil.h>
+ */
+
+ int err_cnt()
+
+
+ /*!
+ Return Value: count of current error messages
+
+
+ Parameters: none
+
+
+ /*!
+ Description:
+
+ `err_cnt` returns the number of error messages on the error message stack.
+
+
+ See Also: err_open, err_read, err_set, err_get, err_print, err_str,
+ err_clear, err_level, err_fileio
+
+ !*/
+
+ {
+ return TopError+1;
}
Index: ComUnidraw/comeditor.c
diff -c ComUnidraw/comeditor.c:1.6 ComUnidraw/comeditor.c:1.7
*** ComUnidraw/comeditor.c:1.6 Wed Jan 9 12:36:21 2002
--- src/ComUnidraw/comeditor.c Wed Jan 9 13:56:30 2002
***************
*** 111,117 ****
const char* comdraw_off_str = unidraw->GetCatalog()->GetAttribute("comdraw_off");
#ifndef HAVE_ACE
if ((!comterplist() || comterplist()->Number()==1) &&
! (comdraw_off_str ? strcmp(comdraw_off_str, "false")==0 : true) && 0)
_terp_iohandler = new ComTerpIOHandler(_terp, stdin);
else
#endif
--- 111,117 ----
const char* comdraw_off_str = unidraw->GetCatalog()->GetAttribute("comdraw_off");
#ifndef HAVE_ACE
if ((!comterplist() || comterplist()->Number()==1) &&
! (comdraw_off_str ? strcmp(comdraw_off_str, "false")==0 : true))
_terp_iohandler = new ComTerpIOHandler(_terp, stdin);
else
#endif
Index: ComUnidraw/comterp-iohandler.c
diff -c ComUnidraw/comterp-iohandler.c:1.1 ComUnidraw/comterp-iohandler.c:1.2
*** ComUnidraw/comterp-iohandler.c:1.1 Tue Nov 13 15:59:28 2001
--- src/ComUnidraw/comterp-iohandler.c Wed Jan 9 13:56:31 2002
***************
*** 72,88 ****
_comterp->_fd = i;
_comterp->_outfunc = (outfuncptr)&ComTerpServ::fd_fputs;
! if (_comterp->read_expr()) {
if (_comterp->eval_expr())
! err_print( stderr, "comterp" );
else if (_comterp->quitflag())
! return 0;
else {
! if (unidraw->updated()) unidraw->Update(true);
! _comterp->print_stack_top();
}
! } else
! err_print( stderr, "comterp");
return 0;
}
--- 72,94 ----
_comterp->_fd = i;
_comterp->_outfunc = (outfuncptr)&ComTerpServ::fd_fputs;
! boolean done = false;
! while (!done) {
! if (_comterp->read_expr()) {
if (_comterp->eval_expr())
! err_print( stderr, "comterp" );
else if (_comterp->quitflag())
! return 0;
else {
! if (unidraw->updated()) unidraw->Update(true);
! _comterp->print_stack_top();
}
! } else {
! if (err_cnt()>0)
! err_print( stderr, "comterp");
! done = 1;
! }
! }
return 0;
}
Index: FrameUnidraw/frameeditor.c
diff -c FrameUnidraw/frameeditor.c:1.2 FrameUnidraw/frameeditor.c:1.3
*** FrameUnidraw/frameeditor.c:1.2 Wed Jan 9 08:24:19 2002
--- src/FrameUnidraw/frameeditor.c Wed Jan 9 13:56:37 2002
***************
*** 33,38 ****
--- 33,39 ----
#include <OverlayUnidraw/ovcomps.h>
#include <OverlayUnidraw/ovkit.h>
#include <OverlayUnidraw/ovviewer.h>
+ #include <OverlayUnidraw/ovunidraw.h>
#include <IVGlyph/textedit.h>
***************
*** 46,52 ****
#include <Unidraw/catalog.h>
#include <Unidraw/ctrlinfo.h>
#include <Unidraw/keymap.h>
- #include <Unidraw/unidraw.h>
#include <InterViews/box.h>
#include <InterViews/border.h>
--- 47,52 ----
***************
*** 116,121 ****
--- 116,122 ----
_autonewframe_tts = nil;
if (!comp) comp = new FrameIdrawComp;
_terp = new ComTerpServ();
+ ((OverlayUnidraw*)unidraw)->comterp(_terp);
AddCommands(_terp);
add_comterp("Flipbook", _terp);
_overlay_kit->Init(comp, name);
***************
*** 123,129 ****
}
void FrameEditor::InitCommands() {
! // ComEditor::InitCommands();
int secs = 0;
Catalog* catalog = unidraw->GetCatalog();
const char* slideshow_str = catalog->GetAttribute("slideshow");
--- 124,130 ----
}
void FrameEditor::InitCommands() {
! ComEditor::InitCommands();
int secs = 0;
Catalog* catalog = unidraw->GetCatalog();
const char* slideshow_str = catalog->GetAttribute("slideshow");
*** /dev/null Wed Jan 9 13:57:10 PST 2002
--- patches/ivtools-020109-johnston-017
*************** patches/ivtools-020109-johnston-017
*** 0 ****
--- 1 ----
+ ivtools-020109-johnston-017
|
|
From: <ivt...@li...> - 2002-01-09 17:17:44
|
Patch: ivtools-020109-johnston-016
For: ivtools-1.0
Author: joh...@us...
Subject: reorg of Time.[ch], work on drawing editor stdin handling
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- migration of conditional #define's from Time.c to Time.h by Todd Gruhn.
- work on stdin handling for comdraw, flipbook, graphdraw, and drawserv
Index: Time/Time.c
diff -c Time/Time.c:1.1 Time/Time.c:1.2
*** Time/Time.c:1.1 Fri Nov 2 13:05:27 2001
--- src/Time/Time.c Wed Jan 9 09:06:11 2002
***************
*** 51,72 ****
#endif
- #if defined(BSD) || defined(hpux) || defined(linux) || defined(__sun) || defined(__alpha) || defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__)
! #ifdef hpux
! #include <time.h>
! #else
! #include <sys/time.h>
! #if defined(__DECCXX) || (defined(__sun) && !defined(__svr4__))
! extern "C" {
! int gettimeofday(struct timeval *tp, struct timezone *tzp);
! }
! #endif
! #if defined(__NetBSD__)
! #include </usr/include/sys/time.h>
! #endif
! #endif
!
static long TIME_ZONE; /* seconds west of GMT */
static int DST_OBSERVED; /* flags U.S. daylight saving time observed */
--- 51,58 ----
#endif
! /************************ end of edits ************************************************/
static long TIME_ZONE; /* seconds west of GMT */
static int DST_OBSERVED; /* flags U.S. daylight saving time observed */
***************
*** 81,89 ****
#define BASE_CLASSES BASE::desc()
#define MEMBER_CLASSES
#define VIRTUAL_BASE_CLASSES Object::desc()
-
-
- #endif
static const unsigned long seconds_in_day = 24*60*60;
--- 67,72 ----
Index: Time/Time.h
diff -c Time/Time.h:1.1 Time/Time.h:1.2
*** Time/Time.h:1.1 Fri Nov 2 13:05:27 2001
--- src/Time/Time.h Wed Jan 9 09:06:11 2002
***************
*** 1,8 ****
- #ifndef TIME_H
- #define TIME_H
-
- /* Time.h -- declarations for class Time
THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
"UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE
AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT
--- 1,5 ----
+ /* Time.h -- declarations for class Time
THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
"UNITED STATES GOVERNMENT WORK". IT WAS WRITTEN AS A PART OF THE
AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE. THIS MEANS IT
***************
*** 30,35 ****
--- 27,78 ----
* Release for 1st edition.
*
*/
+
+ #ifndef TIME_H
+ #define TIME_H
+
+
+ #if defined(SYSV) && ! defined(hpux)
+
+ #include <time.h>
+
+ #define TIME_ZONE timezone
+ #define DST_OBSERVED daylight
+ #define BASE_CLASSES BASE::desc()
+ #define MEMBER_CLASSES
+ #define VIRTUAL_BASE_CLASSES Object::desc()
+
+ #endif
+
+ //moved from Time.c
+
+ #if defined(BSD) || defined(__FreeBSD__) || defined(__NetBSD__)
+
+ #include <sys/time.h>
+ #if defined(__NetBSD__)
+ #include </usr/include/sys/time.h>
+ #endif
+
+ #endif
+
+
+ #if defined(hpux)
+ #include <time.h>
+ #endif
+
+
+ #if defined(linux) || defined(__sun) || defined(__alpha) || defined(__CYGWIN__)
+ #include <sys/time.h>
+
+ #if defined(__DECCXX) || (defined(__sun) && !defined(__svr4__))
+ extern "C" {
+ int gettimeofday(struct timeval *tp, struct timezone *tzp);
+ }
+ #endif
+ #endif
+
+ // END of edits
+
/*
Modified by Vectaport, Inc.
Index: ComUnidraw/comeditor.c
diff -c ComUnidraw/comeditor.c:1.5 ComUnidraw/comeditor.c:1.6
*** ComUnidraw/comeditor.c:1.5 Wed Dec 19 15:14:26 2001
--- src/ComUnidraw/comeditor.c Wed Jan 9 09:06:23 2002
***************
*** 110,116 ****
_terp = new ComTerpServ();
const char* comdraw_off_str = unidraw->GetCatalog()->GetAttribute("comdraw_off");
if ((!comterplist() || comterplist()->Number()==1) &&
! (comdraw_off_str ? strcmp(comdraw_off_str, "false")==0 : true))
_terp_iohandler = new ComTerpIOHandler(_terp, stdin);
else
_terp_iohandler = nil;
--- 110,116 ----
_terp = new ComTerpServ();
const char* comdraw_off_str = unidraw->GetCatalog()->GetAttribute("comdraw_off");
if ((!comterplist() || comterplist()->Number()==1) &&
! (comdraw_off_str ? strcmp(comdraw_off_str, "false")==0 : true) && 0)
_terp_iohandler = new ComTerpIOHandler(_terp, stdin);
else
_terp_iohandler = nil;
Index: comdraw/main.c
diff -c comdraw/main.c:1.1 comdraw/main.c:1.2
*** comdraw/main.c:1.1 Fri Nov 2 13:07:08 2001
--- src/comdraw/main.c Wed Jan 9 09:06:25 2002
***************
*** 308,313 ****
--- 308,327 ----
ComEditor* ed = new ComEditor(initial_file);
unidraw->Open(ed);
+
+ #ifdef HAVE_ACE
+ /* Start up one on stdin */
+ UnidrawComterpHandler* stdin_handler = new UnidrawComterpHandler();
+ #if 0
+ if (ACE::register_stdin_handler(stdin_handler, COMTERP_REACTOR::instance(), nil) == -1)
+ #else
+ if (COMTERP_REACTOR::instance()->register_handler(0, stdin_handler,
+ ACE_Event_Handler::READ_MASK)==-1)
+ #endif
+ cerr << "comdraw: unable to open stdin with ACE\n";
+ ed->SetComTerp(stdin_handler->comterp());
+ #endif
+
fprintf(stderr, "ivtools-%s comdraw: see \"man comdraw\" or type help here for command info\n", VersionString);
unidraw->Run();
}
Index: FrameUnidraw/frameeditor.c
diff -c FrameUnidraw/frameeditor.c:1.1 FrameUnidraw/frameeditor.c:1.2
*** FrameUnidraw/frameeditor.c:1.1 Fri Nov 2 13:07:10 2001
--- src/FrameUnidraw/frameeditor.c Wed Jan 9 09:06:26 2002
***************
*** 123,128 ****
--- 123,129 ----
}
void FrameEditor::InitCommands() {
+ // ComEditor::InitCommands();
int secs = 0;
Catalog* catalog = unidraw->GetCatalog();
const char* slideshow_str = catalog->GetAttribute("slideshow");
Index: flipbook/main.c
diff -c flipbook/main.c:1.1 flipbook/main.c:1.2
*** flipbook/main.c:1.1 Fri Nov 2 13:07:11 2001
--- src/flipbook/main.c Wed Jan 9 09:06:28 2002
***************
*** 270,276 ****
else if (COMTERP_REACTOR::instance ()->register_handler
(peer_acceptor, ACE_Event_Handler::READ_MASK) == -1)
! cerr << "comdraw: unable to register ComterpAcceptor with ACE reactor\n";
else
cerr << "accepting comdraw port (" << portnum << ") connections\n";
--- 270,276 ----
else if (COMTERP_REACTOR::instance ()->register_handler
(peer_acceptor, ACE_Event_Handler::READ_MASK) == -1)
! cerr << "flipbook: unable to register ComterpAcceptor with ACE reactor\n";
else
cerr << "accepting comdraw port (" << portnum << ") connections\n";
Index: graphdraw/main.c
diff -c graphdraw/main.c:1.1 graphdraw/main.c:1.2
*** graphdraw/main.c:1.1 Fri Nov 2 13:07:15 2001
--- src/graphdraw/main.c Wed Jan 9 09:06:30 2002
***************
*** 39,44 ****
--- 39,51 ----
#include <math.h>
#include <version.h>
+ #ifdef HAVE_ACE
+ #include <ComUnidraw/comterp-acehandler.h>
+ #include <OverlayUnidraw/aceimport.h>
+ #include <AceDispatch/ace_dispatcher.h>
+ #endif
+
+
/*****************************************************************************/
static PropertyData properties[] = {
***************
*** 142,147 ****
--- 149,158 ----
{ "*slider_off", "false" },
{ "*zoomer_off", "false" },
{ "*opaque_off", "false" },
+ #ifdef HAVE_ACE
+ { "*comdraw", "20002" },
+ { "*import", "20003" },
+ #endif
{ "*help", "false" },
{ "*font", "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1" },
{ nil }
***************
*** 169,190 ****
--- 180,216 ----
{ "-zoff", "*zoomer_off", OptionValueImplicit, "true" },
{ "-opaque_off", "*opaque_off", OptionValueImplicit, "true" },
{ "-opoff", "*opaque_off", OptionValueImplicit, "true" },
+ #ifdef HAVE_ACE
+ { "-import", "*import", OptionValueNext },
+ { "-comdraw", "*comdraw", OptionValueNext },
+ #endif
{ "-help", "*help", OptionValueImplicit, "true" },
{ "-font", "*font", OptionValueNext },
{ nil }
};
+ #ifdef HAVE_ACE
static char* usage =
+ "Usage: graphdraw [any idraw parameter] [-color5] [-color6] [-comdraw port] \n\
+ [-import port] [-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] \n\
+ [-pagecols|-ncols n] [-pagerows|-nrows n] [-panner_off|-poff] \n\
+ [-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc ] \n\
+ [-scribble_pointer|-scrpt ] [-slider_off|-soff] [-zoomer_off|-zoff] [file]";
+ #else
"Usage: graphdraw [any idraw parameter] [-color5] [-color6] \n\
[-gray5] [-gray6] [-gray7] [-opaque_off|-opoff] [-pagecols|-ncols n] \n\
[-pagerows|-nrows n] [-panner_off|-poff] \n\
[-panner_align|-pal tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc ] \n\
[-scribble_pointer|-scrpt ] [-slider_off|-soff] [-zoomer_off|-zoff] [file]";
+ #endif
/*****************************************************************************/
int main (int argc, char** argv) {
+ #ifdef HAVE_ACE
+ Dispatcher::instance(new AceDispatcher(IMPORT_REACTOR::instance()));
+ #endif
int exit_status = 0;
GraphCreator creator;
GraphCatalog* catalog = new GraphCatalog("graphdraw", &creator);
***************
*** 197,206 ****
--- 223,288 ----
return argc > 2 ? 1 : 0;
}
+ #ifdef HAVE_ACE
+
+ UnidrawImportAcceptor* import_acceptor = new UnidrawImportAcceptor();
+
+ const char* importstr = catalog->GetAttribute("import");
+ int importnum = atoi(importstr);
+ if (import_acceptor->open
+ (ACE_INET_Addr (importnum)) == -1)
+ cerr << "flipbook: unable to open import port " << importnum << "\n";
+
+ else if (IMPORT_REACTOR::instance ()->register_handler
+ (import_acceptor, ACE_Event_Handler::READ_MASK) == -1)
+ cerr << "graphdraw: unable to register UnidrawImportAcceptor with ACE reactor\n";
+
+ else
+ cerr << "accepting import port (" << importnum << ") connections\n";
+
+ // Acceptor factory.
+ UnidrawComterpAcceptor* peer_acceptor = new UnidrawComterpAcceptor();
+
+ const char* portstr = catalog->GetAttribute("comdraw");
+ int portnum = atoi(portstr);
+ if (peer_acceptor->open
+ (ACE_INET_Addr (portnum)) == -1)
+ cerr << "graphdraw: unable to open port " << portnum << "\n";
+
+ else if (COMTERP_REACTOR::instance ()->register_handler
+ (peer_acceptor, ACE_Event_Handler::READ_MASK) == -1)
+ cerr << "graphdraw: unable to register ComterpAcceptor with ACE reactor\n";
+ else
+ cerr << "accepting comdraw port (" << portnum << ") connections\n";
+
+
+ // Register IMPORT_QUIT_HANDLER to receive SIGINT commands. When received,
+ // IMPORT_QUIT_HANDLER becomes "set" and thus, the event loop below will
+ // exit.
+ if (IMPORT_REACTOR::instance ()->register_handler
+ (SIGINT, IMPORT_QUIT_HANDLER::instance ()) == -1)
+ cerr << "graphdraw: unable to register quit handler with ACE reactor\n";
+
+ #endif
+
const char* initial_file = (argc == 2) ? argv[1] : nil;
GraphEditor* ed = new GraphEditor(initial_file);
unidraw->Open(ed);
+
+ #ifdef HAVE_ACE
+ /* Start up one on stdin */
+ UnidrawComterpHandler* stdin_handler = new UnidrawComterpHandler();
+ #if 0
+ if (ACE::register_stdin_handler(stdin_handler, COMTERP_REACTOR::instance(), nil) == -1)
+ #else
+ if (COMTERP_REACTOR::instance()->register_handler(0, stdin_handler,
+ ACE_Event_Handler::READ_MASK)==-1)
+ #endif
+ cerr << "graphdraw: unable to open stdin with ACE\n";
+ ed->SetComTerp(stdin_handler->comterp());
+ #endif
+
cerr << "ivtools-" << VersionString
<< " graphdraw: see \"man graphdraw\" or type help here for command info\n";
unidraw->Run();
*** /dev/null Wed Jan 9 09:06:39 PST 2002
--- patches/ivtools-020109-johnston-016
*************** patches/ivtools-020109-johnston-016
*** 0 ****
--- 1 ----
+ ivtools-020109-johnston-016
|
|
From: <ivt...@li...> - 2001-12-19 23:41:00
|
Patch: ivtools-011219-johnston-015
For: ivtools-1.0
Author: joh...@us...
Subject: documentation for gtod and dtog commands.
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- documentation for gtod and dtog commands.
Index: comdraw/README
diff -c comdraw/README:1.5 comdraw/README:1.6
*** comdraw/README:1.5 Wed Dec 19 15:14:30 2001
--- src/comdraw/README Wed Dec 19 15:25:42 2001
***************
*** 95,100 ****
--- 95,102 ----
dx,dy=stod(sx,sy) -- convert from screen to drawing coordinates
sx,sy=dtos(dx,dy) -- convert from drawing to screen coordinates
+ dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates
+ gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates
handles(flag) -- enable/disable current selection tic marks and/or highlighting
highlight(compview compviewgs) -- set the highlight graphic state for a graphic
Index: man1_ivtools/comdraw.1
diff -c man1_ivtools/comdraw.1:1.5 man1_ivtools/comdraw.1:1.6
*** man1_ivtools/comdraw.1:1.5 Wed Dec 19 15:15:11 2001
--- src/man/man1/comdraw.1 Wed Dec 19 15:26:04 2001
***************
*** 103,108 ****
--- 103,110 ----
dx,dy=stod(sx,sy) -- convert from screen to drawing coordinates
sx,sy=dtos(dx,dy) -- convert from drawing to screen coordinates
+ dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates
+ gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates
handles(flag) --
enable/disable current selection tic marks
*** /dev/null Wed Dec 19 15:26:13 PST 2001
--- patches/ivtools-011219-johnston-015
*************** patches/ivtools-011219-johnston-015
*** 0 ****
--- 1 ----
+ ivtools-011219-johnston-015
|
|
From: <ivt...@li...> - 2001-12-19 23:40:51
|
Patch: ivtools-011219-johnston-014 For: ivtools-1.0 Author: joh...@us... Subject: comdraw commands for polygon raster clipping, graphic-to-drawing coordinate conversions Requires: This is an intermediate patch to ivtools-1.0. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - pclip command for clipping of rasters via a polygonal point list: pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon - dtog and gtod commands for translating to/from graphic coordinates to drawing coordinates: gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates Index: top_ivtools/INSTALL diff -c top_ivtools/INSTALL:1.1 top_ivtools/INSTALL:1.2 *** top_ivtools/INSTALL:1.1 Fri Nov 2 13:04:34 2001 --- ./INSTALL Wed Dec 19 15:13:10 2001 *************** *** 20,26 **** been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. ! 0.b. The gcc compiler. Recently we've been building and testing with egcs-1.0.3, gcc-2.95.*, and gcc-3.0.1. gcc-2.8.1 would still work, as probably would gcc-2.7.2. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0. Before that the --- 20,29 ---- been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. ! 0.b GNU make. Test to make sure this is the version you are using ! with "make -v" ! ! 0.c. The gcc compiler. Recently we've been building and testing with egcs-1.0.3, gcc-2.95.*, and gcc-3.0.1. gcc-2.8.1 would still work, as probably would gcc-2.7.2. You will also need an equivalent copy of libstdc++. libstdc++ comes bundled with gcc-3.0. Before that the *************** *** 32,38 **** the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. ! 0.c. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. --- 35,41 ---- the configure script. Establishing a symbolic link to /usr/local/include/g++ will fix the problem. ! 0.d. An installed copy of X11R6 as distributed by the Open Group, or an equivalent (XFree86 for Linux, or X11R5 from MIT). If you use a vendor's X11 product, the product should be based on X11R4 or later and the product should include imake and the config files. *************** *** 47,53 **** ** find the gcc variant of cpp. Read more about it at ** http://www.ivtools.org/ivtools/faq.html#imakecppprob ! 0.d. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html --- 50,56 ---- ** find the gcc variant of cpp. Read more about it at ** http://www.ivtools.org/ivtools/faq.html#imakecppprob ! 0.e. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: http://www.ph.tn.tudelft.nl/People/klamer/clippoly_entry.html *************** *** 56,62 **** shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). ! i0.e. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: --- 59,65 ---- shared library in the clippoly directory with: "gcc -shared -o libclippoly.so *.o" (you can leave out test.o if you want). ! 0.f. If you want to use the network server capabilities of the ivtools programs, acquire and build ACE, a C++ middleware toolkit available from: *************** *** 81,94 **** Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. ! 0.f if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. ! 0.g Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and --- 84,97 ---- Then use "--with-ace=$ACE_ROOT" when running the configure script as described below. ! 0.g if you want to build the ivxt example program, which demonstrates the embedding of a ivtools drawing editor inside Motif widgets, you'll need some version of lesstif or Motif (libXm). To enable the ivxt build, change line 7 of src/Imakefile from "#if 0" to "#if 1". Without these libraries and include files the build of ivxt will fail, which can be safely ignored. ! 0.h Finally, you might have an interest in building the IueServ library and iueserv program, a networked command interpreter wrapped around the class libraries of the Image Understanding Environment. See http://www.aai.com/AAI/IUE/IUE.html for details on acquiring and Index: top_ivtools/README diff -c top_ivtools/README:1.1 top_ivtools/README:1.2 *** top_ivtools/README:1.1 Fri Nov 2 13:04:34 2001 --- ./README Wed Dec 19 15:13:11 2001 *************** *** 132,142 **** If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing ! list, ivt...@li..., or (for last resort) this ! e-mail address: ivt...@ve.... To subcribe to the ! mailing list, visit ! http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ivtools ! related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html --- 132,141 ---- If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing ! list, ivt...@li.... To subcribe to the mailing ! list, visit ! http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ! ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Index: Unidraw/grcomp.c diff -c Unidraw/grcomp.c:1.2 Unidraw/grcomp.c:1.3 *** Unidraw/grcomp.c:1.2 Thu Nov 29 07:39:16 2001 --- src/Unidraw/grcomp.c Wed Dec 19 15:14:09 2001 *************** *** 155,161 **** fg = (fg == nil) ? gr->GetFgColor() : fg; bg = (bg == nil) ? gr->GetBgColor() : bg; cmd->Store(this, new ColorData(gr->GetFgColor(), gr->GetBgColor())); ! gr->FillBg(!bg->None()); gr->SetColors(fg, bg); Notify(); --- 155,161 ---- fg = (fg == nil) ? gr->GetFgColor() : fg; bg = (bg == nil) ? gr->GetBgColor() : bg; cmd->Store(this, new ColorData(gr->GetFgColor(), gr->GetBgColor())); ! gr->FillBg(bg && !bg->None()); gr->SetColors(fg, bg); Notify(); Index: OverlayUnidraw/ovimport.c diff -c OverlayUnidraw/ovimport.c:1.2 OverlayUnidraw/ovimport.c:1.3 *** OverlayUnidraw/ovimport.c:1.2 Thu Nov 29 07:39:20 2001 --- src/OverlayUnidraw/ovimport.c Wed Dec 19 15:14:19 2001 *************** *** 611,619 **** boolean empty; int newfd; ! GraphicComp* comp = OvImportCmd::DoImport( ! *ifs, empty, _helper, _ed, true, _path, newfd ! ); #if defined(OPEN_DRAWTOOL_URL) if (comp && comp->IsA(OVERLAY_IDRAW_COMP)) { --- 611,618 ---- boolean empty; int newfd; ! GraphicComp* comp = OvImportCmd::DoImport ! (*ifs, empty, _helper, _ed, true, _path , newfd, false); #if defined(OPEN_DRAWTOOL_URL) if (comp && comp->IsA(OVERLAY_IDRAW_COMP)) { *************** *** 1338,1343 **** --- 1337,1343 ---- FILE* fptr = nil; boolean incremental_flag = false; static boolean use_anytopnm = OverlayKit::bincheck("anytopnm"); + popen_ = false; if (chooser_ && chooser_->auto_convert() && use_anytopnm) { char buffer[BUFSIZ]; sprintf( buffer, "anytopnm %s", path ); *************** *** 1346,1351 **** --- 1346,1352 ---- incremental_flag = false; // will work for binary PPM if true cerr << "importing from command: " << path << "\n"; fptr = popen(path, "r"); + popen_ = true; } else if (ParamList::urltest(path)) { incremental_flag = true; char buffer[BUFSIZ]; *************** *** 1383,1389 **** } } else fptr = fopen(path, "r"); ! pathname(path); if (fptr) { --- 1384,1390 ---- } } else fptr = fopen(path, "r"); ! pathname(path, popen_); if (fptr) { *************** *** 1417,1423 **** } } } ! pathname(nil); return comp; #endif --- 1418,1424 ---- } } } ! pathname(nil, popen_); return comp; #endif *************** *** 1434,1442 **** // ### this will fail for a continuously read stream int fd; ! GraphicComp* comp = DoImport( ! instrm, empty, *helper_, GetEditor(), false, pathname(), fd ! ); return comp; } --- 1435,1442 ---- // ### this will fail for a continuously read stream int fd; ! GraphicComp* comp = DoImport ! (instrm, empty, *helper_, GetEditor(), false, pathname(), fd, is_popen()); return comp; } *************** *** 1447,1453 **** /* static */ GraphicComp* OvImportCmd::DoImport( istream& instrm, boolean& empty, FileHelper& helper, Editor* ed, ! boolean return_fd, const char* pathname, int& pnmfd ) { GraphicComp* comp = nil; pnmfd = -1; --- 1447,1453 ---- /* static */ GraphicComp* OvImportCmd::DoImport( istream& instrm, boolean& empty, FileHelper& helper, Editor* ed, ! boolean return_fd, const char* pathname, int& pnmfd, boolean cmdflag ) { GraphicComp* comp = nil; pnmfd = -1; *************** *** 1525,1531 **** if (OverlayKit::bincheck("pstoedit")) { FILE* pptr = nil; int new_fd; ! if (pathname && !return_fd) { char buffer[BUFSIZ]; if (compressed) sprintf(buffer, "tf=`ivtmpnam`;gunzip -c %s | pstoedit -f idraw - $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d"); --- 1525,1531 ---- if (OverlayKit::bincheck("pstoedit")) { FILE* pptr = nil; int new_fd; ! if (pathname && !return_fd && !cmdflag) { char buffer[BUFSIZ]; if (compressed) sprintf(buffer, "tf=`ivtmpnam`;gunzip -c %s | pstoedit -f idraw - $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d"); Index: OverlayUnidraw/ovimport.h diff -c OverlayUnidraw/ovimport.h:1.1 OverlayUnidraw/ovimport.h:1.2 *** OverlayUnidraw/ovimport.h:1.1 Fri Nov 2 13:07:02 2001 --- src/OverlayUnidraw/ovimport.h Wed Dec 19 15:14:19 2001 *************** *** 93,99 **** static GraphicComp* DoImport( istream& instrm, boolean& empty, FileHelper& helper, Editor* ed, ! boolean is_strm, const char* pathname, int& pnmfd ); static GraphicComp* TIFF_Image(const char*); --- 93,99 ---- static GraphicComp* DoImport( istream& instrm, boolean& empty, FileHelper& helper, Editor* ed, ! boolean is_strm, const char* pathname, int& pnmfd, boolean cmdflag ); static GraphicComp* TIFF_Image(const char*); Index: OverlayUnidraw/ovpainter.c diff -c OverlayUnidraw/ovpainter.c:1.2 OverlayUnidraw/ovpainter.c:1.3 *** OverlayUnidraw/ovpainter.c:1.2 Wed Nov 14 16:41:55 2001 --- src/OverlayUnidraw/ovpainter.c Wed Dec 19 15:14:19 2001 *************** *** 1142,1147 **** --- 1142,1161 ---- XIntersectRegion(rg, tmp, rg); XDestroyRegion(tmp); + if (r_r && r_r->clippts()) { + MultiLineObj* mlo = r_r->clippts(); + XPoint polypts[mlo->count()]; + for (int i=0; i<mlo->count(); i++) { + IntCoord x, y; + MapRoundUp(c, mlo->x()[i], mlo->y()[i], x, y); + polypts[i].x = x; + polypts[i].y = y; + } + Region poly = XPolygonRegion(polypts, mlo->count(), EvenOddRule); + XIntersectRegion(rg, poly, rg); + XDestroyRegion(poly); + } + boolean free_pmap; IntCoord xmin, ymin; Index: OverlayUnidraw/ovraster.c diff -c OverlayUnidraw/ovraster.c:1.1 OverlayUnidraw/ovraster.c:1.2 *** OverlayUnidraw/ovraster.c:1.1 Fri Nov 2 13:07:02 2001 --- src/OverlayUnidraw/ovraster.c Wed Dec 19 15:14:19 2001 *************** *** 909,918 **** #endif _xbeg = _xend = _ybeg = _yend = -1; _damage_done = 0; } ! OverlayRasterRect::~OverlayRasterRect () {} Graphic* OverlayRasterRect::Copy () { OverlayRasterRect* new_rr; new_rr = new OverlayRasterRect( --- 909,936 ---- #endif _xbeg = _xend = _ybeg = _yend = -1; _damage_done = 0; + _clippts = nil; } ! OverlayRasterRect::~OverlayRasterRect () { Unref(_clippts);} + void OverlayRasterRect::clippts(MultiLineObj* pts) { + _clippts = pts; + Resource::ref(_clippts); + } + + void OverlayRasterRect::clippts(int* x, int* y, int n) { + Resource::unref(_clippts); + if (x && y) { + _clippts = MultiLineObj::make_pts(x, y, n); + Resource::ref(_clippts); + } + } + + MultiLineObj* OverlayRasterRect::clippts() { + return _clippts; + } + Graphic* OverlayRasterRect::Copy () { OverlayRasterRect* new_rr; new_rr = new OverlayRasterRect( *************** *** 921,926 **** --- 939,945 ---- new_rr->xend(_xend); new_rr->ybeg(_ybeg); new_rr->yend(_yend); + new_rr->clippts(_clippts); return new_rr; } *************** *** 1024,1029 **** --- 1043,1052 ---- Unref(_raster); _raster = rect._raster; Resource::ref(_raster); + + Unref(_clippts); + _clippts = rect._clippts; + Resource::ref(_clippts); return *this; } Index: OverlayUnidraw/ovraster.h diff -c OverlayUnidraw/ovraster.h:1.1 OverlayUnidraw/ovraster.h:1.2 *** OverlayUnidraw/ovraster.h:1.1 Fri Nov 2 13:07:03 2001 --- src/OverlayUnidraw/ovraster.h Wed Dec 19 15:14:19 2001 *************** *** 202,207 **** --- 202,208 ---- }; + class MultiLineObj; class OverlayRaster; //: derived RasterRect Graphic for use with OverlayRaster and GrayRaster. *************** *** 210,215 **** --- 211,223 ---- OverlayRasterRect(OverlayRaster* = nil, Graphic* = nil); virtual ~OverlayRasterRect(); + void clippts(MultiLineObj*); + // set polygon used for additional clipping + void clippts(int* x, int* y, int n); + // set polygon used for additional clipping + MultiLineObj* clippts(); + // return polygon used for additional clipping + virtual Graphic* Copy(); OverlayRaster* GetOriginal() { return (OverlayRaster*)_raster; } *************** *** 272,277 **** --- 280,287 ---- IntCoord _damage_b; IntCoord _damage_r; IntCoord _damage_t; + + MultiLineObj* _clippts; friend class RasterOvComp; friend class RasterOvView; Index: ComUnidraw/comeditor.c diff -c ComUnidraw/comeditor.c:1.4 ComUnidraw/comeditor.c:1.5 *** ComUnidraw/comeditor.c:1.4 Fri Nov 30 05:53:14 2001 --- src/ComUnidraw/comeditor.c Wed Dec 19 15:14:26 2001 *************** *** 210,220 **** --- 210,223 ---- comterp->add_command("dtos", new DrawingToScreenFunc(comterp, this)); comterp->add_command("stod", new ScreenToDrawingFunc(comterp, this)); + comterp->add_command("dtog", new DrawingToGraphicFunc(comterp, this)); + comterp->add_command("gtod", new GraphicToDrawingFunc(comterp, this)); comterp->add_command("poke", new PixelPokeFunc(comterp, this)); comterp->add_command("pcols", new PixelColsFunc(comterp, this)); comterp->add_command("prows", new PixelRowsFunc(comterp, this)); comterp->add_command("pflush", new PixelFlushFunc(comterp, this)); + comterp->add_command("pclip", new PixelClipFunc(comterp, this)); } /* virtual */ void ComEditor::ExecuteCmd(Command* cmd) { Index: ComUnidraw/pixelfunc.c diff -c ComUnidraw/pixelfunc.c:1.1 ComUnidraw/pixelfunc.c:1.2 *** ComUnidraw/pixelfunc.c:1.1 Wed Nov 21 02:36:46 2001 --- src/ComUnidraw/pixelfunc.c Wed Dec 19 15:14:26 2001 *************** *** 25,31 **** --- 25,33 ---- #include <OverlayUnidraw/ovraster.h> #include <Unidraw/Graphic/damage.h> + #include <Unidraw/iterator.h> #include <Unidraw/viewer.h> + #include <Attribute/attrlist.h> /*****************************************************************************/ *************** *** 125,130 **** --- 127,167 ---- } else push_stack(ComValue::nullval()); + + } + + /*****************************************************************************/ + + PixelClipFunc::PixelClipFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) { + } + + void PixelClipFunc::execute() { + Viewer* viewer = _ed->GetViewer(); + + ComValue rastcompv(stack_arg(0)); + ComValue ptsv(stack_arg(1)); + reset_stack(); + + RasterOvComp* rastcomp = (RasterOvComp*) rastcompv.geta(RasterOvComp::class_symid()); + OverlayRasterRect* rastrect = rastcomp ? rastcomp->GetOverlayRasterRect() : nil; + OverlayRaster* raster = rastrect ? rastrect->GetOriginal() : nil; + + if (rastrect && ptsv.is_array() && ptsv.array_val()->Number()>2 ) { + int n = ptsv.array_val()->Number()/2; + IntCoord x[n], y[n]; + Iterator it; + AttributeValueList* avl = ptsv.array_val(); + avl->First(it); + for( int i=0; i<n; i++ ) { + x[i] = avl->GetAttrVal(it)->int_val(); + avl->Next(it); + y[i] = avl->GetAttrVal(it)->int_val(); + avl->Next(it); + } + rastrect->clippts(x, y, n); + rastcomp->Notify(); + } else + push_stack(ComValue::nullval()); } Index: ComUnidraw/pixelfunc.h diff -c ComUnidraw/pixelfunc.h:1.1 ComUnidraw/pixelfunc.h:1.2 *** ComUnidraw/pixelfunc.h:1.1 Wed Nov 21 02:36:46 2001 --- src/ComUnidraw/pixelfunc.h Wed Dec 19 15:14:26 2001 *************** *** 65,68 **** --- 65,78 ---- virtual const char* docstring() { return "%s(compview) -- flush pixels poked into a raster"; } }; + + //: command to clip raster with polygon + // pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon + class PixelClipFunc : public UnidrawFunc { + public: + PixelClipFunc(ComTerp*,Editor*); + virtual void execute(); + virtual const char* docstring() { + return "%s(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon"; } + }; #endif /* !defined(_pixelfunc_h) */ Index: ComUnidraw/unifunc.c diff -c ComUnidraw/unifunc.c:1.1 ComUnidraw/unifunc.c:1.2 *** ComUnidraw/unifunc.c:1.1 Fri Nov 2 13:07:06 2001 --- src/ComUnidraw/unifunc.c Wed Dec 19 15:14:26 2001 *************** *** 714,716 **** --- 714,794 ---- } } + /*****************************************************************************/ + + GraphicToDrawingFunc::GraphicToDrawingFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) { + } + + void GraphicToDrawingFunc::execute() { + ComValue viewval(stack_arg(0)); + ComValue coordsv(stack_arg(1)); + reset_stack(); + if (!viewval.is_object()) { + push_stack(ComValue::nullval()); + return; + } + + ComponentView* view = (ComponentView*)viewval.obj_val(); + OverlayComp* comp = view ? (OverlayComp*)view->GetSubject() : nil; + Graphic* gr = comp ? comp->GetGraphic() : nil; + + OverlayEditor* ed = (OverlayEditor*)GetEditor(); + OverlayViewer* viewer = ed ? (OverlayViewer*)ed->GetViewer() : nil; + if (gr && viewer && coordsv.is_array() && coordsv.array_len()==2) { + AttributeValueList *avl = coordsv.array_val(); + Iterator i; + avl->First(i); + float gx = avl->GetAttrVal(i)->float_val(); + avl->Next(i); + float gy = avl->GetAttrVal(i)->float_val(); + float sx, sy, dx, dy; + viewer->GraphicToScreen(gr, gx, gy, sx, sy); + viewer->ScreenToDrawing(sx, sy, dx, dy); + AttributeValueList* navl = new AttributeValueList(); + ComValue retval(navl); + navl->Append(new ComValue(dx)); + navl->Append(new ComValue(dy)); + push_stack(retval); + } + } + + /*****************************************************************************/ + + DrawingToGraphicFunc::DrawingToGraphicFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) { + } + + void DrawingToGraphicFunc::execute() { + ComValue viewval(stack_arg(0)); + ComValue coordsv(stack_arg(1)); + reset_stack(); + if (!viewval.is_object()) { + push_stack(ComValue::nullval()); + return; + } + + ComponentView* view = (ComponentView*)viewval.obj_val(); + OverlayComp* comp = view ? (OverlayComp*)view->GetSubject() : nil; + Graphic* gr = comp ? comp->GetGraphic() : nil; + OverlayEditor* ed = (OverlayEditor*)GetEditor(); + OverlayViewer* viewer = ed ? (OverlayViewer*)ed->GetViewer() : nil; + if (gr && viewer && coordsv.is_array() && coordsv.array_len()==2) { + AttributeValueList *avl = coordsv.array_val(); + Iterator i; + avl->First(i); + float dx = avl->GetAttrVal(i)->float_val(); + avl->Next(i); + float dy = avl->GetAttrVal(i)->float_val(); + float sx, sy, gx, gy; + viewer->DrawingToScreen(dx, dy, sx, sy); + viewer->ScreenToGraphic(sx, sy, gr, gx, gy); + AttributeValueList* navl = new AttributeValueList(); + ComValue retval(navl); + navl->Append(new ComValue(/* (int) */gx)); + navl->Append(new ComValue(/* (int) */gy)); + push_stack(retval); + } + } + + + + Index: ComUnidraw/unifunc.h diff -c ComUnidraw/unifunc.h:1.1 ComUnidraw/unifunc.h:1.2 *** ComUnidraw/unifunc.h:1.1 Fri Nov 2 13:07:06 2001 --- src/ComUnidraw/unifunc.h Wed Dec 19 15:14:26 2001 *************** *** 220,224 **** --- 220,246 ---- }; + //: command to convert from graphic to drawing coordinates + // dx,dy=gtod(compview gx,gy) -- convert from graphic to drawing coordinates + class GraphicToDrawingFunc : public UnidrawFunc { + public: + GraphicToDrawingFunc(ComTerp*,Editor*); + virtual void execute(); + virtual const char* docstring() { + return "dx,dy=%s(compview gx,gy) -- convert from graphic to drawing coordinates."; } + + }; + + //: command to convert from drawing to graphic coordinates + // gx,gy=dtog(compview dx,dy) -- convert from drawing to graphic coordinates + class DrawingToGraphicFunc : public UnidrawFunc { + public: + DrawingToGraphicFunc(ComTerp*,Editor*); + virtual void execute(); + virtual const char* docstring() { + return "gx,gy=%s(compview dx,dy) -- convert from drawing to graphic coordinates."; } + + }; + #endif /* !defined(_unifunc_h) */ Index: comdraw/README diff -c comdraw/README:1.4 comdraw/README:1.5 *** comdraw/README:1.4 Fri Nov 30 05:53:16 2001 --- src/comdraw/README Wed Dec 19 15:14:30 2001 *************** *** 120,125 **** --- 120,126 ---- pcols(compview) -- number of columns in a raster pcols(compview) -- number of rows in a raster pflush(compview) -- flush pixels poked into a raster + pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon PLOTTING COMMANDS Index: man1_ivtools/comdraw.1 diff -c man1_ivtools/comdraw.1:1.4 man1_ivtools/comdraw.1:1.5 *** man1_ivtools/comdraw.1:1.4 Fri Nov 30 05:53:28 2001 --- src/man/man1/comdraw.1 Wed Dec 19 15:15:11 2001 *************** *** 130,135 **** --- 130,136 ---- pcols(compview) -- number of columns in a raster pcols(compview) -- number of rows in a raster pflush(compview) -- flush pixels poked into a raster + pclip(compview x1,y1,x2,y2,x3,y3[,...,xn,yn]) -- clip raster with polygon .SH PLOTTING COMMANDS Index: config_ivtools/local.def diff -c config_ivtools/local.def:1.1 config_ivtools/local.def:1.2 *** config_ivtools/local.def:1.1 Fri Nov 2 13:08:11 2001 --- config/local.def Wed Dec 19 15:15:18 2001 *************** *** 187,190 **** --- 187,193 ---- #undef ClipPolyLibBase #define ClipPolyLibBase libclippoly.SO + /* substitute C compiler for makedepend */ + #define DependCmd CCDriver -M + XCOMM ------------------------------------------------------------------------- Index: config_ivtools/rules.def diff -c config_ivtools/rules.def:1.3 config_ivtools/rules.def:1.4 *** config_ivtools/rules.def:1.3 Tue Nov 20 08:47:23 2001 --- config/rules.def Wed Dec 19 15:15:18 2001 *************** *** 434,440 **** #ifndef DependTarget #define DependTarget() @@\ depend:: @@\ ! g++ -M $(DEPEND_CCFLAGS) $(SRCS) >Makefile.depend #endif /* --- 434,440 ---- #ifndef DependTarget #define DependTarget() @@\ depend:: @@\ ! $(DEPEND) $(DEPEND_CCFLAGS) $(SRCS) >Makefile.depend #endif /* *** /dev/null Wed Dec 19 15:15:23 PST 2001 --- patches/ivtools-011219-johnston-014 *************** patches/ivtools-011219-johnston-014 *** 0 **** --- 1 ---- + ivtools-011219-johnston-014 |
|
From: <ivt...@li...> - 2001-11-29 23:15:47
|
Patch: ivtools-011130-johnston-013
For: ivtools-1.0
Author: joh...@us...
Subject: fix bug from None bg color work
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- fix bug from None bg color work
Index: Unidraw/graphic.c
diff -c Unidraw/graphic.c:1.2 Unidraw/graphic.c:1.3
*** Unidraw/graphic.c:1.2 Thu Nov 29 07:39:16 2001
--- src/Unidraw/graphic.c Fri Nov 30 07:24:17 2001
***************
*** 478,484 ****
void Graphic::update (Graphic* gs) {
Transformer* t = _p->GetTransformer();
! _p->FillBg(gs->BgFilled() && !gs->GetBgColor()->None());
_p->SetColors(gs->GetFgColor(), gs->GetBgColor());
_p->SetPattern(gs->GetPattern());
_p->SetBrush(gs->GetBrush());
--- 478,484 ----
void Graphic::update (Graphic* gs) {
Transformer* t = _p->GetTransformer();
! _p->FillBg(gs->BgFilled());
_p->SetColors(gs->GetFgColor(), gs->GetBgColor());
_p->SetPattern(gs->GetPattern());
_p->SetBrush(gs->GetBrush());
*** /dev/null Fri Nov 30 07:24:29 PST 2001
--- patches/ivtools-011130-johnston-013
*************** patches/ivtools-011130-johnston-013
*** 0 ****
--- 1 ----
+ ivtools-011130-johnston-013
|
|
From: <ivt...@li...> - 2001-11-29 21:56:45
|
Patch: ivtools-011130-johnston-011
For: ivtools-1.0
Author: joh...@us...
Subject: commands for empty rasters, list equality, nil arithmetic
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add a comdraw command to create white rasters initialized with a 2
pixel wide black border:
compview=raster(x0,y0,x1,y1) -- create an empty raster
- make equality and inequality operators work for list objects. Note
that the "," list concatenation operator always appends the second
operand to the first operand if it is already a list, as illustrated
by this example ("> " inserted for clarity):
> l1=1,2,3
{1,2,3}
> l2=l1,4
{1,2,3,4}
> l1==l2
1
Alternately the "list" command can be used to create a distinct list:
> l1=1,2,3
{1,2,3}
> l2=list(l1),4
{1,2,3,4}
> l1==l2
0
- fix up some more handling of nil by arithmetic operators. The rule
is nil in, nil out.
Index: ComTerp/boolfunc.c
diff -c ComTerp/boolfunc.c:1.1 ComTerp/boolfunc.c:1.2
*** ComTerp/boolfunc.c:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/boolfunc.c Fri Nov 30 05:52:48 2001
***************
*** 251,256 ****
--- 251,260 ----
result.boolean_ref() = strncmp(str1, str2, nval.int_val())==0;
}
break;
+ case ComValue::ArrayType:
+ result.boolean_ref() = operand2.type() == ComValue::ArrayType &&
+ operand1.array_val() == operand2.array_val();
+ break;
default:
result.boolean_ref() = operand1.is_type(ComValue::UnknownType) &&
operand2.is_type(ComValue::UnknownType);
***************
*** 314,319 ****
--- 318,327 ----
const char* str2 = operand2.symbol_ptr();
result.boolean_ref() = strncmp(str1, str2, nval.int_val())!=0;
}
+ break;
+ case ComValue::ArrayType:
+ result.boolean_ref() = operand2.type() != ComValue::ArrayType ||
+ operand1.array_val() != operand2.array_val();
break;
case ComValue::UnknownType:
result.boolean_ref() = operand2.is_known();
Index: ComTerp/listfunc.h
diff -c ComTerp/listfunc.h:1.1 ComTerp/listfunc.h:1.2
*** ComTerp/listfunc.h:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/listfunc.h Fri Nov 30 05:52:48 2001
***************
*** 36,42 ****
class ComValue;
//: create list command for ComTerp.
! // lst=list([olst|strm]) -- create list, copy list, or convert stream
class ListFunc : public ComFunc {
public:
ListFunc(ComTerp*);
--- 36,42 ----
class ComValue;
//: create list command for ComTerp.
! // lst=list([olst|strm] :strmlst) -- create list, copy list, or convert stream
class ListFunc : public ComFunc {
public:
ListFunc(ComTerp*);
***************
*** 44,50 ****
virtual void execute();
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "lst=%s([olst|strm]) -- create list, copy list, or convert stream"; }
};
//: list member command for ComTerp.
--- 44,50 ----
virtual void execute();
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "lst=%s([olst|strm] :strmlst) -- create list, copy list, or convert stream"; }
};
//: list member command for ComTerp.
Index: ComTerp/numfunc.c
diff -c ComTerp/numfunc.c:1.1 ComTerp/numfunc.c:1.2
*** ComTerp/numfunc.c:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/numfunc.c Fri Nov 30 05:52:48 2001
***************
*** 37,47 ****
--- 37,49 ----
void NumFunc::promote(ComValue& op1, ComValue& op2) {
if (op1.type() == op2.type()) return;
+ #if 0
if (op1.is_unknown() || op2.is_unknown()) {
op1.type(ComValue::UnknownType);
op2.type(ComValue::UnknownType);
return;
}
+ #endif
boolean op1bigger = op1.type() > op2.type();
ComValue* greater = op1bigger ? &op1 : &op2;
***************
*** 179,184 ****
--- 181,192 ----
promote(operand1, operand2);
ComValue result(operand1);
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = operand1.char_val() + operand2.char_val();
***************
*** 234,239 ****
--- 242,253 ----
promote(operand1, operand2);
ComValue result(operand1);
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = operand1.char_val() - operand2.char_val();
***************
*** 276,281 ****
--- 290,302 ----
void MinusFunc::execute() {
ComValue& operand1 = stack_arg(0);
ComValue result(operand1);
+
+ if (operand1.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = - operand1.char_val();
***************
*** 320,325 ****
--- 341,352 ----
ComValue& operand2 = stack_arg(1);
promote(operand1, operand2);
ComValue result(operand1);
+
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
switch (result.type()) {
case ComValue::CharType:
***************
*** 365,370 ****
--- 392,404 ----
ComValue& operand1 = stack_arg(0);
ComValue& operand2 = stack_arg(1);
promote(operand1, operand2);
+
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
ComValue result(operand1);
switch (result.type()) {
***************
*** 442,447 ****
--- 476,487 ----
promote(operand1, operand2);
ComValue result(operand1);
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
if (operand2.char_val()!=0)
***************
*** 517,522 ****
--- 557,568 ----
promote(operand1, operand2);
ComValue result(operand1);
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = operand1.char_val() < operand2.char_val()
***************
*** 575,580 ****
--- 621,632 ----
promote(operand1, operand2);
ComValue result(operand1);
+ if (operand1.is_unknown() || operand2.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = operand1.char_val() > operand2.char_val()
***************
*** 632,637 ****
--- 684,695 ----
ComValue& operand1 = stack_arg(0);
ComValue result(operand1);
+ if (operand1.is_unknown()) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
switch (result.type()) {
case ComValue::CharType:
result.char_ref() = operand1.char_val() < 0
Index: comterp/README
diff -c comterp/README:1.1 comterp/README:1.2
*** comterp/README:1.1 Fri Nov 2 13:04:52 2001
--- src/comterp_/README Fri Nov 30 05:52:50 2001
***************
*** 174,180 ****
LIST COMMANDS:
! lst=list([olst|strm]) -- create list, copy list, or convert stream
val=at(list|attrlist n :set val ) -- return (or set) nth item in a list
--- 174,180 ----
LIST COMMANDS:
! lst=list([olst|strm] :strmlst) -- create list, copy list, or convert stream
val=at(list|attrlist n :set val ) -- return (or set) nth item in a list
Index: ComUnidraw/comeditor.c
diff -c ComUnidraw/comeditor.c:1.3 ComUnidraw/comeditor.c:1.4
*** ComUnidraw/comeditor.c:1.3 Fri Nov 16 10:25:20 2001
--- src/ComUnidraw/comeditor.c Fri Nov 30 05:53:14 2001
***************
*** 135,140 ****
--- 135,142 ----
comterp->add_command("arrowspline", new CreateOpenSplineFunc(comterp, this));
comterp->add_command("polygon", new CreatePolygonFunc(comterp, this));
comterp->add_command("closedspline", new CreateClosedSplineFunc(comterp, this));
+ comterp->add_command("raster", new CreateRasterFunc(comterp, this));
+ comterp->add_command("pixmap", new CreateRasterFunc(comterp, this));
comterp->add_command("center", new CenterFunc(comterp, this));
comterp->add_command("mbr", new MbrFunc(comterp, this));
Index: ComUnidraw/grfunc.c
diff -c ComUnidraw/grfunc.c:1.2 ComUnidraw/grfunc.c:1.3
*** ComUnidraw/grfunc.c:1.2 Thu Nov 29 07:39:24 2001
--- src/ComUnidraw/grfunc.c Fri Nov 30 05:53:14 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 2000 IET Inc.
* Copyright (c) 1994-1997 Vectaport Inc.
*
***************
*** 35,40 ****
--- 36,42 ----
#include <OverlayUnidraw/ovellipse.h>
#include <OverlayUnidraw/ovrect.h>
#include <OverlayUnidraw/ovpolygon.h>
+ #include <OverlayUnidraw/ovraster.h>
#include <OverlayUnidraw/ovspline.h>
#include <OverlayUnidraw/ovtext.h>
***************
*** 578,583 ****
--- 580,647 ----
if (PasteModeFunc::paste_mode()==0)
cmd = new PasteCmd(_ed, new Clipboard(comp));
ComValue compval(symbol_add("ClosedSplineComp"), new ComponentView(comp));
+ compval.object_compview(true);
+ push_stack(compval);
+ } else
+ push_stack(ComValue::nullval());
+
+ execute_log(cmd);
+ }
+
+ /*****************************************************************************/
+
+ CreateRasterFunc::CreateRasterFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) {
+ }
+
+ void CreateRasterFunc::execute() {
+ const int x0 = 0;
+ const int y0 = 1;
+ const int x1 = 2;
+ const int y1 = 3;
+ const int n = 4;
+ int coords[n];
+ ComValue& vect = stack_arg(0);
+ if (!vect.is_type(ComValue::ArrayType) || vect.array_len() != n) {
+ reset_stack();
+ push_stack(ComValue::nullval());
+ return;
+ }
+
+ ALIterator i;
+ AttributeValueList* avl = vect.array_val();
+ avl->First(i);
+ for (int j=0; j<n && !avl->Done(i); j++) {
+ coords[j] = avl->GetAttrVal(i)->int_val();
+ avl->Next(i);
+ }
+ reset_stack();
+
+ PasteCmd* cmd = nil;
+
+ if (coords[x0] != coords[x1] || coords[y0] != coords[y1]) {
+
+ float dcoords[n];
+ ((OverlayViewer*)GetEditor()->GetViewer())->ScreenToDrawing
+ (coords[x0], coords[y0], dcoords[x0], dcoords[y0]);
+ ((OverlayViewer*)GetEditor()->GetViewer())->ScreenToDrawing
+ (coords[x1], coords[y1], dcoords[x1], dcoords[y1]);
+
+ OverlayRaster* raster =
+ new OverlayRaster((int)(dcoords[x1]-dcoords[x0]+1),
+ (int)(dcoords[y1]-dcoords[y0]+1),
+ 2 /* initialize with border of 2 */);
+
+ OverlayRasterRect* rasterrect = new OverlayRasterRect(raster, stdgraphic);
+
+ Transformer* t = new Transformer();
+ t->Translate(dcoords[x0], dcoords[y0]);
+ rasterrect->SetTransformer(t);
+ Unref(t);
+
+ RasterOvComp* comp = new RasterOvComp(rasterrect);
+ if (PasteModeFunc::paste_mode()==0)
+ cmd = new PasteCmd(_ed, new Clipboard(comp));
+ ComValue compval(symbol_add("RasterComp"), new ComponentView(comp));
compval.object_compview(true);
push_stack(compval);
} else
Index: ComUnidraw/grfunc.h
diff -c ComUnidraw/grfunc.h:1.1 ComUnidraw/grfunc.h:1.2
*** ComUnidraw/grfunc.h:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/grfunc.h Fri Nov 30 05:53:14 2001
***************
*** 111,116 ****
--- 111,126 ----
return "compview=%s(x0,y0[,x1,y1,...]) -- create a closed spline"; }
};
+ //: raster creation command for comdraw.
+ // compview=raster(x0,y0,x1,y1) -- create an empty raster
+ class CreateRasterFunc : public UnidrawFunc {
+ public:
+ CreateRasterFunc(ComTerp*,Editor*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "compview=%s(x0,y0,x1,y1) -- create an empty raster"; }
+ };
+
//: command for setting font state variable in comdraw.
// font(fontnum) -- set current font from menu order
class FontFunc : public UnidrawFunc {
Index: comdraw/README
diff -c comdraw/README:1.3 comdraw/README:1.4
*** comdraw/README:1.3 Fri Nov 16 10:25:21 2001
--- src/comdraw/README Fri Nov 30 05:53:16 2001
***************
*** 38,43 ****
--- 38,44 ----
compview=arrowspline(x0,y0[,x1,y1,...]) -- create an open spline with arrows
compview=polygon(x0,y0[,x1,y1,...]) -- create a polygon
compview=closedspline(x0,y0[,x1,y1,...]) -- create a closed spline
+ compview=raster(x0,x1,y0,y1) -- create an empty raster
GRAPHIC STATS COMMANDS
Index: man1_ivtools/comdraw.1
diff -c man1_ivtools/comdraw.1:1.3 man1_ivtools/comdraw.1:1.4
*** man1_ivtools/comdraw.1:1.3 Fri Nov 16 10:25:26 2001
--- src/man/man1/comdraw.1 Fri Nov 30 05:53:28 2001
***************
*** 43,48 ****
--- 43,50 ----
create a polygon
compview=closedspline(x0,y0[,x1,y1,...]) --
create a closed spline
+ compview=raster(x0,y0,x1,y1) --
+ create an empty raster
.SH GRAPHIC STATS COMMANDS
Index: man1_ivtools/comterp.1
diff -c man1_ivtools/comterp.1:1.1 man1_ivtools/comterp.1:1.2
*** man1_ivtools/comterp.1:1.1 Fri Nov 2 13:07:59 2001
--- src/man/man1/comterp.1 Fri Nov 30 05:53:29 2001
***************
*** 185,191 ****
.SH LIST COMMANDS:
! lst=list([olst|strm]) -- create list, copy list, or convert stream
val=at(list|attrlist n :set val) -- return (or set) nth item in a list
--- 185,191 ----
.SH LIST COMMANDS:
! lst=list([olst|strm] :strmlst) -- create list, copy list, or convert stream
val=at(list|attrlist n :set val) -- return (or set) nth item in a list
*** /dev/null Fri Nov 30 05:53:33 PST 2001
--- patches/ivtools-011130-johnston-011
*************** patches/ivtools-011130-johnston-011
*** 0 ****
--- 1 ----
+ ivtools-011130-johnston-011
|
|
From: <ivt...@li...> - 2001-11-28 23:40:18
|
Patch: ivtools-011129-johnston-010
For: ivtools-1.0
Author: joh...@us...
Subject: transparent background color, fix import use of gunzip, new configure support scripts
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add "None" color to background color menu, exposing the hidden
fillbg flag (transparent background mechanism) for the first time in
the history of this software.
- fix drawing editor import's use of gunzip to decompress graphic
files.
- update config.guess and config.sub, support scripts for the
configure script from the autoconf package. May fix problems with
HPUX, ALPHA, and ARM.
Index: Unidraw/catalog.c
diff -c Unidraw/catalog.c:1.1 Unidraw/catalog.c:1.2
*** Unidraw/catalog.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/catalog.c Thu Nov 29 07:39:16 2001
***************
*** 302,307 ****
--- 302,308 ----
pssolid = FindGrayLevel(0.0);
psclear = FindGrayLevel(1.0);
psnonepat = FindNonePattern();
+ psnonecolor = FindNoneColor();
stdgraphic = new FullGraphic;
stdgraphic->FillBg(true);
***************
*** 1226,1232 ****
--- 1227,1236 ----
color = FindColor(name, ir, ig, ib);
}
+ } else if (buf[0] == 'n' || buf[0] == 'N') {
+ color = FindNoneColor();
}
+
return color;
}
***************
*** 1258,1263 ****
--- 1262,1284 ----
return color;
}
+ PSColor* Catalog::FindNoneColor () {
+ PSColor* color = nil;
+
+ for (UList* u = _colors->First(); u != _colors->End(); u = u->Next()) {
+ color = getcolor(u);
+
+ if (color->None()) {
+ return color;
+ }
+ }
+ color = new PSColor;
+ Ref(color);
+ _colors->Append(new UList(color));
+
+ return color;
+ }
+
PSColor* Catalog::ReadColor (const char* n, int index) {
const char* def = GetAttribute(Name(n, index));
***************
*** 1269,1276 ****
PSColor* color = nil;
char name[CHARBUFSIZE];
int r = 0, g = 0, b = 0;
! if (sscanf(definition, "%s %d %d %d", name, &r, &g, &b) == 4) {
color = FindColor(name, r, g, b);
} else if (sscanf(definition, "%s", name) == 1) {
--- 1290,1300 ----
PSColor* color = nil;
char name[CHARBUFSIZE];
int r = 0, g = 0, b = 0;
+
+ if (strcmp(definition, "none")==0) {
+ color = FindNoneColor();
! } else if (sscanf(definition, "%s %d %d %d", name, &r, &g, &b) == 4) {
color = FindColor(name, r, g, b);
} else if (sscanf(definition, "%s", name) == 1) {
Index: Unidraw/ellipse.c
diff -c Unidraw/ellipse.c:1.1 Unidraw/ellipse.c:1.2
*** Unidraw/ellipse.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/ellipse.c Thu Nov 29 07:39:16 2001
***************
*** 188,193 ****
--- 188,194 ----
if (patVar != nil) ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ ellipse->FillBg(!colVar->GetBgColor()->None());
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
ellipse->SetTransformer(rel);
Index: Unidraw/globals.c
diff -c Unidraw/globals.c:1.1 Unidraw/globals.c:1.2
*** Unidraw/globals.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/globals.c Thu Nov 29 07:39:16 2001
***************
*** 45,50 ****
--- 45,51 ----
PSPattern* pssolid;
PSPattern* psclear;
PSPattern* psnonepat;
+ PSColor* psnonecolor;
PSBrush* pssingle;
PSBrush* psnonebr;
PSFont* psstdfont;
Index: Unidraw/graphic.c
diff -c Unidraw/graphic.c:1.1 Unidraw/graphic.c:1.2
*** Unidraw/graphic.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/graphic.c Thu Nov 29 07:39:16 2001
***************
*** 478,484 ****
void Graphic::update (Graphic* gs) {
Transformer* t = _p->GetTransformer();
! _p->FillBg(gs->BgFilled());
_p->SetColors(gs->GetFgColor(), gs->GetBgColor());
_p->SetPattern(gs->GetPattern());
_p->SetBrush(gs->GetBrush());
--- 478,484 ----
void Graphic::update (Graphic* gs) {
Transformer* t = _p->GetTransformer();
! _p->FillBg(gs->BgFilled() && !gs->GetBgColor()->None());
_p->SetColors(gs->GetFgColor(), gs->GetBgColor());
_p->SetPattern(gs->GetPattern());
_p->SetBrush(gs->GetBrush());
Index: Unidraw/grcomp.c
diff -c Unidraw/grcomp.c:1.1 Unidraw/grcomp.c:1.2
*** Unidraw/grcomp.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/grcomp.c Thu Nov 29 07:39:16 2001
***************
*** 155,160 ****
--- 155,161 ----
fg = (fg == nil) ? gr->GetFgColor() : fg;
bg = (bg == nil) ? gr->GetBgColor() : bg;
cmd->Store(this, new ColorData(gr->GetFgColor(), gr->GetBgColor()));
+ gr->FillBg(!bg->None());
gr->SetColors(fg, bg);
Notify();
***************
*** 247,252 ****
--- 248,254 ----
ColorData* cd = (ColorData*) cmd->Recall(this);
if (cd != nil) {
+ gr->FillBg(!cd->_bg->None());
gr->SetColors(cd->_fg, cd->_bg);
Notify();
}
Index: Unidraw/line.c
diff -c Unidraw/line.c:1.1 Unidraw/line.c:1.2
*** Unidraw/line.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/line.c Thu Nov 29 07:39:16 2001
***************
*** 241,246 ****
--- 241,247 ----
if (brVar != nil) line->SetBrush(brVar->GetBrush());
if (colVar != nil) {
+ line->FillBg(!colVar->GetBgColor()->None());
line->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
line->SetTransformer(rel);
***************
*** 489,494 ****
--- 490,496 ----
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ polygon->FillBg(!colVar->GetBgColor()->None());
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
Index: Unidraw/polygon.c
diff -c Unidraw/polygon.c:1.1 Unidraw/polygon.c:1.2
*** Unidraw/polygon.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/polygon.c Thu Nov 29 07:39:16 2001
***************
*** 192,197 ****
--- 192,198 ----
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ polygon->FillBg(!colVar->GetBgColor()->None());
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
Index: Unidraw/pspaint.c
diff -c Unidraw/pspaint.c:1.1 Unidraw/pspaint.c:1.2
*** Unidraw/pspaint.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/pspaint.c Thu Nov 29 07:39:16 2001
***************
*** 67,72 ****
--- 67,80 ----
/*****************************************************************************/
+ PSColor::PSColor() : Color((ColorIntensity)1., (ColorIntensity)1., (ColorIntensity)1.) {
+ _name = strdup("None");
+ _r = (ColorIntensity)1.;
+ _g = (ColorIntensity)1.;
+ _b = (ColorIntensity)1.;
+ _none = true;
+ }
+
PSColor::PSColor(
ColorIntensity r, ColorIntensity g, ColorIntensity b, const char* name
) : Color(r, g, b) {
***************
*** 74,79 ****
--- 82,88 ----
_r = r;
_g = g;
_b = b;
+ _none = false;
}
PSColor::~PSColor () { delete _name; }
Index: Unidraw/rect.c
diff -c Unidraw/rect.c:1.1 Unidraw/rect.c:1.2
*** Unidraw/rect.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/rect.c Thu Nov 29 07:39:16 2001
***************
*** 259,264 ****
--- 259,265 ----
if (patVar != nil) rect->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ rect->FillBg(!colVar->GetBgColor()->None());
rect->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
rect->SetTransformer(rel);
Index: Unidraw/spline.c
diff -c Unidraw/spline.c:1.1 Unidraw/spline.c:1.2
*** Unidraw/spline.c:1.1 Fri Nov 2 13:06:49 2001
--- src/Unidraw/spline.c Thu Nov 29 07:39:16 2001
***************
*** 188,193 ****
--- 188,194 ----
if (patVar != nil) spline->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ spline->FillBg(!colVar->GetBgColor()->None());
spline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
spline->SetTransformer(rel);
***************
*** 386,391 ****
--- 387,393 ----
if (patVar != nil) cbs->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ cbs->FillBg(!colVar->GetBgColor()->None());
cbs->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
cbs->SetTransformer(rel);
Index: UniIdraw/idarrow.c
diff -c UniIdraw/idarrow.c:1.1 UniIdraw/idarrow.c:1.2
*** UniIdraw/idarrow.c:1.1 Fri Nov 2 13:06:52 2001
--- src/UniIdraw/idarrow.c Thu Nov 29 07:39:18 2001
***************
*** 200,205 ****
--- 200,206 ----
if (patVar != nil) { aline->SetPattern(patVar->GetPattern()); }
if (colVar != nil) {
+ aline->FillBg(!colVar->GetBgColor()->None());
aline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
***************
*** 452,457 ****
--- 453,459 ----
if (patVar != nil) aml->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ aml->FillBg(!colVar->GetBgColor()->None());
aml->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
aml->SetTransformer(rel);
***************
*** 701,706 ****
--- 703,709 ----
if (patVar != nil) aml->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ aml->FillBg(!colVar->GetBgColor()->None());
aml->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
aml->SetTransformer(rel);
Index: OverlayUnidraw/ovarrow.c
diff -c OverlayUnidraw/ovarrow.c:1.1 OverlayUnidraw/ovarrow.c:1.2
*** OverlayUnidraw/ovarrow.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovarrow.c Thu Nov 29 07:39:20 2001
***************
*** 569,574 ****
--- 569,576 ----
if (patVar != nil) aml->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ aml->FillBg(!colVar->GetBgColor()->None());
+
aml->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
aml->SetTransformer(rel);
***************
*** 1008,1013 ****
--- 1010,1016 ----
if (patVar != nil) aml->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ aml->FillBg(!colVar->GetBgColor()->None());
aml->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
aml->SetTransformer(rel);
Index: OverlayUnidraw/ovellipse.c
diff -c OverlayUnidraw/ovellipse.c:1.1 OverlayUnidraw/ovellipse.c:1.2
*** OverlayUnidraw/ovellipse.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovellipse.c Thu Nov 29 07:39:20 2001
***************
*** 196,201 ****
--- 196,202 ----
if (patVar != nil) ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ ellipse->FillBg(!colVar->GetBgColor()->None());
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
ellipse->SetTransformer(rel);
Index: OverlayUnidraw/ovhull.c
diff -c OverlayUnidraw/ovhull.c:1.1 OverlayUnidraw/ovhull.c:1.2
*** OverlayUnidraw/ovhull.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovhull.c Thu Nov 29 07:39:20 2001
***************
*** 192,197 ****
--- 192,198 ----
if (brVar != nil) cpoly->SetBrush(brVar->GetBrush());
if (patVar != nil) cpoly->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ cpoly->FillBg(!colVar->GetBgColor()->None());
cpoly->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
Index: OverlayUnidraw/ovimport.c
diff -c OverlayUnidraw/ovimport.c:1.1 OverlayUnidraw/ovimport.c:1.2
*** OverlayUnidraw/ovimport.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovimport.c Thu Nov 29 07:39:20 2001
***************
*** 1528,1534 ****
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "tf=`ivtmpnam`;gzip -c %s | pstoedit -f idraw - $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d");
else
sprintf(buffer, "tf=`ivtmpnam`;pstoedit -f idraw %s $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d");
pptr = popen(buffer, "r");
--- 1528,1534 ----
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "tf=`ivtmpnam`;gunzip -c %s | pstoedit -f idraw - $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d");
else
sprintf(buffer, "tf=`ivtmpnam`;pstoedit -f idraw %s $tf.%s;cat $tf.*;rm $tf.*", pathname, "%d");
pptr = popen(buffer, "r");
***************
*** 1569,1575 ****
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "gzip -c %s | giftopnm", pathname);
else
sprintf(buffer, "giftopnm %s", pathname);
FILE* pptr = popen(buffer, "r");
--- 1569,1575 ----
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "gunzip -c %s | giftopnm", pathname);
else
sprintf(buffer, "giftopnm %s", pathname);
FILE* pptr = popen(buffer, "r");
***************
*** 1624,1635 ****
char buffer[BUFSIZ];
if (dithermap_flag) {
if (compressed)
! sprintf(buffer, "cm=`ivtmpnam`;stdcmapppm>$cm;gzip -c %s | djpeg -map $cm -dither fs -pnm;rm $cm", pathname);
else
sprintf(buffer, "cm=`ivtmpnam`;stdcmapppm>$cm;djpeg -map $cm -dither fs -pnm %s;rm $cm", pathname);
} else {
if (compressed)
! sprintf(buffer, "gzip -c %s | djpeg -pnm", pathname);
else
sprintf(buffer, "djpeg -pnm %s", pathname);
}
--- 1624,1635 ----
char buffer[BUFSIZ];
if (dithermap_flag) {
if (compressed)
! sprintf(buffer, "cm=`ivtmpnam`;stdcmapppm>$cm;gunzip -c %s | djpeg -map $cm -dither fs -pnm;rm $cm", pathname);
else
sprintf(buffer, "cm=`ivtmpnam`;stdcmapppm>$cm;djpeg -map $cm -dither fs -pnm %s;rm $cm", pathname);
} else {
if (compressed)
! sprintf(buffer, "gunzip -c %s | djpeg -pnm", pathname);
else
sprintf(buffer, "djpeg -pnm %s", pathname);
}
***************
*** 1661,1667 ****
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "gzip -c %s | pngtopnm", pathname);
else
sprintf(buffer, "pngtopnm %s", pathname);
FILE* pptr = popen(buffer, "r");
--- 1661,1667 ----
if (pathname && !return_fd) {
char buffer[BUFSIZ];
if (compressed)
! sprintf(buffer, "gunzip -c %s | pngtopnm", pathname);
else
sprintf(buffer, "pngtopnm %s", pathname);
FILE* pptr = popen(buffer, "r");
Index: OverlayUnidraw/ovkit.c
diff -c OverlayUnidraw/ovkit.c:1.1 OverlayUnidraw/ovkit.c:1.2
*** OverlayUnidraw/ovkit.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovkit.c Thu Nov 29 07:39:20 2001
***************
*** 848,861 ****
}
! Glyph* OverlayKit::MenuRect (Color * color) {
! Brush * brush = new Brush(0.0);
Coord w = (MENU_WIDTH*ivcm);
Coord h = (MENU_HEIGHT*ivcm);
Resource::ref(brush);
return new Fig31Rectangle(brush, WidgetKit::instance()->foreground(),
! color, 0, 0, w, h);
}
--- 848,861 ----
}
! Glyph* OverlayKit::MenuRect (PSColor * color) {
! Brush * brush = color->None() ? new Brush(0xaaaa, 0.0) : new Brush(0.0);
Coord w = (MENU_WIDTH*ivcm);
Coord h = (MENU_HEIGHT*ivcm);
Resource::ref(brush);
return new Fig31Rectangle(brush, WidgetKit::instance()->foreground(),
! color->None() ? nil : color, 0, 0, w, h);
}
***************
*** 1219,1234 ****
ControlInfo* ctrlInfo;
IntCoord w = Math::round(MENU_WIDTH*ivcm);
IntCoord h = Math::round(MENU_HEIGHT*ivcm);
!
! SF_Rect* sfr = new SF_Rect(0, 0, w, h, stdgraphic);
! sfr->SetColors(color, color);
! MakeMenu(mbi, new ColorCmd(new ControlInfo(new RectOvComp(sfr), color->GetName()),
! nil, color),
lk.hbox(MenuRect(color),
kit.label(" "),
kit.label(color->GetName()),
lk.hglue())
! );
color = catalog->ReadColor(bgAttrib, ++i);
}
--- 1219,1238 ----
ControlInfo* ctrlInfo;
IntCoord w = Math::round(MENU_WIDTH*ivcm);
IntCoord h = Math::round(MENU_HEIGHT*ivcm);
!
! if (color->None()) {
! ctrlInfo = new ControlInfo("None");
! } else {
! SF_Rect* sfr = new SF_Rect(0, 0, w, h, stdgraphic);
! sfr->SetColors(color, color);
! ctrlInfo = new ControlInfo(new RectOvComp(sfr), color->GetName());
! }
! MakeMenu(mbi, new ColorCmd( ctrlInfo, nil, color),
lk.hbox(MenuRect(color),
kit.label(" "),
kit.label(color->GetName()),
lk.hglue())
! );
color = catalog->ReadColor(bgAttrib, ++i);
}
Index: OverlayUnidraw/ovkit.h
diff -c OverlayUnidraw/ovkit.h:1.1 OverlayUnidraw/ovkit.h:1.2
*** OverlayUnidraw/ovkit.h:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovkit.h Thu Nov 29 07:39:21 2001
***************
*** 35,41 ****
#include <Unidraw/enter-scope.h>
#include <InterViews/_enter.h>
- class Color;
class Command;
class Deck;
class Editor;
--- 35,40 ----
***************
*** 49,54 ****
--- 48,54 ----
class Patch;
class UPage;
class PSBrush;
+ class PSColor;
class PSPattern;
class Viewer;
class TelltaleGroup;
***************
*** 202,208 ****
// create line to put in a pulldown menu.
Glyph* MenuArrowLine(boolean tail, boolean head);
// create arrow line to put in a pulldown menu.
! Glyph* MenuRect(Color*);
// create color rectangle to put in a pulldown menu.
Glyph* MenuPatRect(PSPattern*);
// create patterned rectangle to put in a pulldown menu.
--- 202,208 ----
// create line to put in a pulldown menu.
Glyph* MenuArrowLine(boolean tail, boolean head);
// create arrow line to put in a pulldown menu.
! Glyph* MenuRect(PSColor*);
// create color rectangle to put in a pulldown menu.
Glyph* MenuPatRect(PSPattern*);
// create patterned rectangle to put in a pulldown menu.
Index: OverlayUnidraw/ovline.c
diff -c OverlayUnidraw/ovline.c:1.1 OverlayUnidraw/ovline.c:1.2
*** OverlayUnidraw/ovline.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovline.c Thu Nov 29 07:39:21 2001
***************
*** 258,263 ****
--- 258,264 ----
if (brVar != nil) line->SetBrush(brVar->GetBrush());
if (colVar != nil) {
+ line->FillBg(!colVar->GetBgColor()->None());
line->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
line->SetTransformer(rel);
***************
*** 542,547 ****
--- 543,549 ----
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ polygon->FillBg(!colVar->GetBgColor()->None());
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
Index: OverlayUnidraw/ovpolygon.c
diff -c OverlayUnidraw/ovpolygon.c:1.1 OverlayUnidraw/ovpolygon.c:1.2
*** OverlayUnidraw/ovpolygon.c:1.1 Fri Nov 2 13:07:02 2001
--- src/OverlayUnidraw/ovpolygon.c Thu Nov 29 07:39:21 2001
***************
*** 195,200 ****
--- 195,201 ----
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ polygon->FillBg(!colVar->GetBgColor()->None());
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
Index: OverlayUnidraw/ovrect.c
diff -c OverlayUnidraw/ovrect.c:1.1 OverlayUnidraw/ovrect.c:1.2
*** OverlayUnidraw/ovrect.c:1.1 Fri Nov 2 13:07:03 2001
--- src/OverlayUnidraw/ovrect.c Thu Nov 29 07:39:21 2001
***************
*** 270,275 ****
--- 270,276 ----
if (patVar != nil) rect->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ rect->FillBg(!colVar->GetBgColor()->None());
rect->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
rect->SetTransformer(rel);
Index: OverlayUnidraw/ovspline.c
diff -c OverlayUnidraw/ovspline.c:1.1 OverlayUnidraw/ovspline.c:1.2
*** OverlayUnidraw/ovspline.c:1.1 Fri Nov 2 13:07:03 2001
--- src/OverlayUnidraw/ovspline.c Thu Nov 29 07:39:21 2001
***************
*** 190,195 ****
--- 190,196 ----
if (patVar != nil) spline->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ spline->FillBg(!colVar->GetBgColor()->None());
spline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
spline->SetTransformer(rel);
***************
*** 415,420 ****
--- 416,422 ----
if (patVar != nil) cbs->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ cbs->FillBg(!colVar->GetBgColor()->None());
cbs->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
cbs->SetTransformer(rel);
Index: drawtool/main.c
diff -c drawtool/main.c:1.1 drawtool/main.c:1.2
*** drawtool/main.c:1.1 Fri Nov 2 13:07:04 2001
--- src/drawtool/main.c Thu Nov 29 07:39:23 2001
***************
*** 138,143 ****
--- 138,144 ----
{ "*bgcolor10", "White" },
{ "*bgcolor11", "LtGray 50000 50000 50000" },
{ "*bgcolor12", "DkGray 33000 33000 33000" },
+ { "*bgcolor13", "none" },
{ "*history", "20" },
{ "*color5", "false" },
Index: ComUnidraw/grfunc.c
diff -c ComUnidraw/grfunc.c:1.1 ComUnidraw/grfunc.c:1.2
*** ComUnidraw/grfunc.c:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/grfunc.c Thu Nov 29 07:39:24 2001
***************
*** 113,118 ****
--- 113,119 ----
if (patVar != nil) rect->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ rect->FillBg(!colVar->GetBgColor()->None());
rect->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
rect->SetTransformer(rel);
***************
*** 177,182 ****
--- 178,184 ----
if (brVar != nil) line->SetBrush(brVar->GetBrush());
if (colVar != nil) {
+ line->FillBg(!colVar->GetBgColor()->None());
line->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
line->SetTransformer(rel);
***************
*** 240,245 ****
--- 242,248 ----
if (patVar != nil) ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ ellipse->FillBg(!colVar->GetBgColor()->None());
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
ellipse->SetTransformer(rel);
***************
*** 302,307 ****
--- 305,311 ----
TextGraphic* text = new TextGraphic(txt, stdgraphic);
if (colVar != nil) {
+ text->FillBg(!colVar->GetBgColor()->None());
text->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
if (fntVar != nil) text->SetFont(fntVar->GetFont());
***************
*** 370,375 ****
--- 374,380 ----
if (patVar != nil) multiline->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ multiline->FillBg(!colVar->GetBgColor()->None());
multiline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
multiline->SetTransformer(rel);
***************
*** 435,440 ****
--- 440,446 ----
if (patVar != nil) openspline->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ openspline->FillBg(!colVar->GetBgColor()->None());
openspline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
openspline->SetTransformer(rel);
***************
*** 498,503 ****
--- 504,510 ----
if (patVar != nil) polygon->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ polygon->FillBg(!colVar->GetBgColor()->None());
polygon->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
polygon->SetTransformer(rel);
***************
*** 562,567 ****
--- 569,575 ----
if (patVar != nil) closedspline->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ closedspline->FillBg(!colVar->GetBgColor()->None());
closedspline->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
closedspline->SetTransformer(rel);
Index: GraphUnidraw/edgecomp.c
diff -c GraphUnidraw/edgecomp.c:1.1 GraphUnidraw/edgecomp.c:1.2
*** GraphUnidraw/edgecomp.c:1.1 Fri Nov 2 13:07:13 2001
--- src/GraphUnidraw/edgecomp.c Thu Nov 29 07:39:26 2001
***************
*** 687,694 ****
ArrowLine* line = new ArrowLine(x0, y0, x1, y1, false, true, 1.5, pg);
if (brVar != nil)
line->SetBrush(brVar->GetBrush());
! if (colVar != nil)
line->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
EdgeComp* newedge = new EdgeComp(line, nil, start_subedge, end_subedge);
if (gv0 || gv1)
--- 687,696 ----
ArrowLine* line = new ArrowLine(x0, y0, x1, y1, false, true, 1.5, pg);
if (brVar != nil)
line->SetBrush(brVar->GetBrush());
! if (colVar != nil) {
! line->FillBg(!colVar->GetBgColor()->None());
line->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
+ }
EdgeComp* newedge = new EdgeComp(line, nil, start_subedge, end_subedge);
if (gv0 || gv1)
Index: GraphUnidraw/nodecomp.c
diff -c GraphUnidraw/nodecomp.c:1.1 GraphUnidraw/nodecomp.c:1.2
*** GraphUnidraw/nodecomp.c:1.1 Fri Nov 2 13:07:13 2001
--- src/GraphUnidraw/nodecomp.c Thu Nov 29 07:39:26 2001
***************
*** 116,122 ****
SetGraphic(pic);
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
--- 116,122 ----
SetGraphic(pic);
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled() && !ellipse->GetBgColor()->None());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
***************
*** 138,144 ****
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
--- 138,144 ----
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled() && !ellipse->GetBgColor()->None());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
***************
*** 175,181 ****
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
--- 175,181 ----
// kludge to fix ps: fonts are collected from comp\'s graphic, so we
// need to add the font to the picture\'s gs
! pic->FillBg(ellipse->BgFilled() && !ellipse->GetBgColor()->None());
pic->SetColors(ellipse->GetFgColor(), ellipse->GetBgColor());
pic->SetPattern(ellipse->GetPattern());
pic->SetBrush(ellipse->GetBrush());
***************
*** 941,946 ****
--- 941,947 ----
else if (patVar != nil)
ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ ellipse->FillBg(!colVar->GetBgColor()->None());
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
***************
*** 979,984 ****
--- 980,986 ----
else if (patVar != nil)
ellipse->SetPattern(patVar->GetPattern());
if (colVar != nil) {
+ ellipse->FillBg(!colVar->GetBgColor()->None());
ellipse->SetColors(colVar->GetFgColor(), colVar->GetBgColor());
}
Index: include_unidraw/catalog.h
diff -c include_unidraw/catalog.h:1.1 include_unidraw/catalog.h:1.2
*** include_unidraw/catalog.h:1.1 Fri Nov 2 13:07:40 2001
--- src/include/Unidraw/catalog.h Thu Nov 29 07:39:32 2001
***************
*** 170,175 ****
--- 170,176 ----
PSBrush* FindBrush(int, int);
PSBrush* FindBrush(int, float);
PSColor* FindColor(const char*, int = 0, int = 0, int = 0);
+ PSColor* FindNoneColor();
PSFont* FindFont(const char*, const char* = "", const char* = "");
PSPattern* FindNonePattern();
PSPattern* FindGrayLevel(float);
Index: include_unidraw/globals.h
diff -c include_unidraw/globals.h:1.1 include_unidraw/globals.h:1.2
*** include_unidraw/globals.h:1.1 Fri Nov 2 13:07:40 2001
--- src/include/Unidraw/globals.h Thu Nov 29 07:39:32 2001
***************
*** 96,101 ****
--- 96,102 ----
extern PSPattern* pssolid;
extern PSPattern* psclear;
extern PSPattern* psnonepat;
+ extern PSColor* psnonecolor;
extern PSBrush* pssingle;
extern PSBrush* psnonebr;
extern PSFont* psstdfont;
Index: include_graphic/pspaint.h
diff -c include_graphic/pspaint.h:1.1 include_graphic/pspaint.h:1.2
*** include_graphic/pspaint.h:1.1 Fri Nov 2 13:07:46 2001
--- src/include/Unidraw/Graphic/pspaint.h Thu Nov 29 07:39:34 2001
***************
*** 74,90 ****
// <a href=../man3.1/pspaint.html>man page</a>
class PSColor : public Color {
public:
PSColor(ColorIntensity, ColorIntensity, ColorIntensity, const char*);
virtual ~PSColor();
const char* GetName();
void GetIntensities(ColorIntensity&, ColorIntensity&, ColorIntensity&);
protected:
char* _name; // stores name passed into constructor
ColorIntensity _r, _g, _b; // stores intensities passed to ctor
};
! inline const char* PSColor::GetName () { return _name; }
//: "PostScript" font object
// <a href=../man3.1/pspaint.html>man page</a>
--- 74,94 ----
// <a href=../man3.1/pspaint.html>man page</a>
class PSColor : public Color {
public:
+ PSColor();
PSColor(ColorIntensity, ColorIntensity, ColorIntensity, const char*);
virtual ~PSColor();
+ boolean None();
const char* GetName();
void GetIntensities(ColorIntensity&, ColorIntensity&, ColorIntensity&);
protected:
+ boolean _none;
char* _name; // stores name passed into constructor
ColorIntensity _r, _g, _b; // stores intensities passed to ctor
};
! inline boolean PSColor::None () { return _none; }
! inline const char* PSColor::GetName () { return _none ? "None" : _name; }
//: "PostScript" font object
// <a href=../man3.1/pspaint.html>man page</a>
Index: scripts_ivtools/config.guess
diff -c scripts_ivtools/config.guess:1.1 scripts_ivtools/config.guess:1.2
*** scripts_ivtools/config.guess:1.1 Fri Nov 2 13:07:52 2001
--- src/scripts/config.guess Thu Nov 29 07:39:36 2001
***************
*** 1,6 ****
#! /bin/sh
# Attempt to guess a canonical system name.
! # Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
--- 1,7 ----
#! /bin/sh
# Attempt to guess a canonical system name.
! # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999
! # Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
***************
*** 23,28 ****
--- 24,30 ----
# Written by Per Bothner <bo...@cy...>.
# The master version of this file is at the FSF in /home/gd/gnu/lib.
+ # Please send patches to <aut...@gn...>.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
***************
*** 35,40 ****
--- 37,56 ----
# (but try to keep the structure clean).
#
+ # Use $HOST_CC if defined. $CC may point to a cross-compiler
+ if test x"$CC_FOR_BUILD" = x; then
+ if test x"$HOST_CC" != x; then
+ CC_FOR_BUILD="$HOST_CC"
+ else
+ if test x"$CC" != x; then
+ CC_FOR_BUILD="$CC"
+ else
+ CC_FOR_BUILD=cc
+ fi
+ fi
+ fi
+
+
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (gh...@no... 8/24/94.)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
***************
*** 46,62 ****
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
! trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
! echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
--- 62,127 ----
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
! dummy=dummy-$$
! trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
+ if test $UNAME_RELEASE = "V4.0"; then
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ fi
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
! cat <<EOF >$dummy.s
! .globl main
! .ent main
! main:
! .frame \$30,0,\$26,0
! .prologue 0
! .long 0x47e03d80 # implver $0
! lda \$2,259
! .long 0x47e20c21 # amask $2,$1
! srl \$1,8,\$2
! sll \$2,2,\$2
! sll \$0,3,\$0
! addl \$1,\$0,\$0
! addl \$2,\$0,\$0
! ret \$31,(\$26),1
! .end main
! EOF
! $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
! if test "$?" = 0 ; then
! ./$dummy
! case "$?" in
! 7)
! UNAME_MACHINE="alpha"
! ;;
! 15)
! UNAME_MACHINE="alphaev5"
! ;;
! 14)
! UNAME_MACHINE="alphaev56"
! ;;
! 10)
! UNAME_MACHINE="alphapca56"
! ;;
! 16)
! UNAME_MACHINE="alphaev6"
! ;;
! esac
! fi
! rm -f $dummy.s $dummy
! echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
! exit 0 ;;
! Alpha\ *:Windows_NT*:*)
! # How do we know it's Interix rather than the generic POSIX subsystem?
! # Should we change UNAME_MACHINE based on the output of uname instead
! # of the specific Alpha model?
! echo alpha-pc-interix
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
***************
*** 68,79 ****
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
! echo m68k-cbm-openbsd${UNAME_RELEASE}
! exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
! Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
# ak...@wp... (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
--- 133,174 ----
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! *:[Aa]miga[Oo][Ss]:*:*)
! echo ${UNAME_MACHINE}-unknown-amigaos
! exit 0 ;;
! arc64:OpenBSD:*:*)
! echo mips64el-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! arc:OpenBSD:*:*)
! echo mipsel-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! hkmips:OpenBSD:*:*)
! echo mips-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! pmax:OpenBSD:*:*)
! echo mipsel-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! sgi:OpenBSD:*:*)
! echo mips-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! wgrisc:OpenBSD:*:*)
! echo mipsel-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! *:OS/390:*:*)
! echo i370-ibm-openedition
! exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
! arm32:NetBSD:*:*)
! echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
! exit 0 ;;
! SR2?01:HI-UX/MPP:*:*)
! echo hppa1.1-hitachi-hiuxmpp
! exit 0;;
! Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# ak...@wp... (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
***************
*** 81,89 ****
echo pyramid-pyramid-bsd
fi
exit 0 ;;
! NILE:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
--- 176,187 ----
echo pyramid-pyramid-bsd
fi
exit 0 ;;
! NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
***************
*** 108,113 ****
--- 206,223 ----
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit 0 ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
***************
*** 115,134 ****
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
! echo m68k-atari-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
! echo m68k-sun-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
! echo m68k-apple-openbsd${UNAME_RELEASE}
exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
--- 225,282 ----
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! # The situation for MiNT is a little confusing. The machine name
! # can be virtually everything (everything which is not
! # "atarist" or "atariste" at least should have a processor
! # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
! # to the lowercase version "mint" (or "freemint"). Finally
! # the system name "TOS" denotes a system which is actually not
! # MiNT. But MiNT is downward compatible to TOS, so this should
! # be no problem.
! atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
! echo m68k-atari-mint${UNAME_RELEASE}
! exit 0 ;;
! atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
! echo m68k-atari-mint${UNAME_RELEASE}
! exit 0 ;;
! *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
! echo m68k-atari-mint${UNAME_RELEASE}
exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
! exit 0 ;;
! mvme68k:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ mvme88k:OpenBSD:*:*)
+ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit 0 ;;
+ macppc:NetBSD:*:*)
+ echo powerpc-apple-netbsd${UNAME_RELEASE}
+ exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
***************
*** 138,146 ****
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
! sed 's/^ //' << EOF >dummy.c
! int main (argc, argv) int argc; char **argv; {
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
--- 286,301 ----
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
! sed 's/^ //' << EOF >$dummy.c
! #ifdef __cplusplus
! int main (int argc, char *argv[]) {
! #else
! int main (argc, argv) int argc; char *argv[]; {
! #endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
***************
*** 155,164 ****
exit (-1);
}
EOF
! ${CC-cc} dummy.c -o dummy \
! && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
! && rm dummy.c dummy && exit 0
! rm -f dummy.c dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
--- 310,319 ----
exit (-1);
}
EOF
! $CC_FOR_BUILD $dummy.c -o $dummy \
! && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
! && rm $dummy.c $dummy && exit 0
! rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
***************
*** 168,184 ****
echo m88k-harris-cxux7
exit 0 ;;
m88k:*:4*:R4*)
! if test -f /bin/ocsinq
! then
! if /bin/ocsinq
! then
! echo m88k-motorola-sysv3
! else
! echo m88k-motorola-sysv4
! fi
! else
! echo m88k-motorola-sysv4
! fi
exit 0 ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
--- 323,329 ----
echo m88k-harris-cxux7
exit 0 ;;
m88k:*:4*:R4*)
! echo m88k-motorola-sysv4
exit 0 ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
***************
*** 186,200 ****
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
! if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
! if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
! -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
echo m88k-dg-dgux${UNAME_RELEASE}
! else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
--- 331,348 ----
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
! if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110]
! then
! if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
! [ ${TARGET_BINARY_INTERFACE}x = x ]
! then
echo m88k-dg-dgux${UNAME_RELEASE}
! else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
***************
*** 220,226 ****
exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
! sed 's/^ //' << EOF >dummy.c
#include <sys/systemcfg.h>
main()
--- 368,374 ----
exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
! sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h>
main()
***************
*** 231,238 ****
exit(0);
}
EOF
! ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
! rm -f dummy.c dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
--- 379,386 ----
exit(0);
}
EOF
! $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
! rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
***************
*** 241,247 ****
fi
exit 0 ;;
*:AIX:*:4)
! if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
--- 389,396 ----
fi
exit 0 ;;
*:AIX:*:4)
! IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
! if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
***************
*** 274,291 ****
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
! 9000/[3478]??:HP-UX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
! 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
! 9000/8?? ) HP_ARCH=hppa1.0 ;;
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
! sed 's/^ //' << EOF >dummy.c
#include <unistd.h>
int
main ()
--- 423,472 ----
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
! 9000/[34678]??:HP-UX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
! 9000/[678][0-9][0-9])
! sed 's/^ //' << EOF >$dummy.c
! #include <stdlib.h>
! #include <unistd.h>
!
! int main ()
! {
! #if defined(_SC_KERNEL_BITS)
! long bits = sysconf(_SC_KERNEL_BITS);
! #endif
! long cpu = sysconf (_SC_CPU_VERSION);
!
! switch (cpu)
! {
! case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
! case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
! case CPU_PA_RISC2_0:
! #if defined(_SC_KERNEL_BITS)
! switch (bits)
! {
! case 64: puts ("hppa2.0w"); break;
! case 32: puts ("hppa2.0n"); break;
! default: puts ("hppa2.0"); break;
! } break;
! #else /* !defined(_SC_KERNEL_BITS) */
! puts ("hppa2.0"); break;
! #endif
! default: puts ("hppa1.0"); break;
! }
! exit (0);
! }
! EOF
! (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
! rm -f $dummy.c $dummy
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
! sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
int
main ()
***************
*** 310,317 ****
exit (0);
}
EOF
! ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
! rm -f dummy.c dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
--- 491,498 ----
exit (0);
}
EOF
! $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
! rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
***************
*** 320,325 ****
--- 501,509 ----
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
+ *9??*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
***************
*** 336,341 ****
--- 520,528 ----
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
+ hppa*:OpenBSD:*:*)
+ echo hppa-unknown-openbsd
+ exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
***************
*** 368,463 ****
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
! FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
! hp3[0-9][05]:OpenBSD:*:*)
! echo m68k-hp-openbsd${UNAME_RELEASE}
exit 0 ;;
! i?86:BSD/386:*:* | *:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:NetBSD:*:*)
! echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
! echo i386-pc-cygwin32
exit 0 ;;
p*:CYGWIN*:*)
! echo powerpcle-unknown-cygwin32
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
! echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
# The BFD linker knows what the default object file format is, so
! # first see if it will tell us.
! ld_help_string=`ld --help 2>&1`
! if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
! echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0
! elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
! echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0
! elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
! echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0
! elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
! echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0
! elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
! echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0
! elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
! echo "powerpc-unknown-linux-gnu" ; exit 0
! elif test "${UNAME_MACHINE}" = "alpha" ; then
! echo alpha-unknown-linux-gnu ; exit 0
! elif test "${UNAME_MACHINE}" = "sparc" ; then
! echo sparc-unknown-linux-gnu ; exit 0
! else
! # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us
! # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout.
! test ! -d /usr/lib/ldscripts/. \
! && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
! # Determine whether the default compiler is a.out or elf
! cat >dummy.c <<EOF
main(argc, argv)
! int argc;
! char *argv[];
{
#ifdef __ELF__
! printf ("%s-pc-linux-gnu\n", argv[1]);
#else
! printf ("%s-pc-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF
! ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
! rm -f dummy.c dummy
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
! echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
else
! echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
--- 555,845 ----
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE}
+ exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
! FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
+ F301:UNIX_System_V:*:*)
+ echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
+ exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
! hp300:OpenBSD:*:*)
! echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
! i?86:BSD/386:*:* | i?86:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit 0 ;;
*:FreeBSD:*:*)
+ if test -x /usr/bin/objformat; then
+ if test "elf" = "`/usr/bin/objformat`"; then
+ echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
+ exit 0
+ fi
+ fi
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:NetBSD:*:*)
! echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
! echo ${UNAME_MACHINE}-pc-cygwin
! exit 0 ;;
! i*:MINGW*:*)
! echo ${UNAME_MACHINE}-pc-mingw32
! exit 0 ;;
! i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
! # How do we know it's Interix rather than the generic POSIX subsystem?
! # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
! # UNAME_MACHINE based on the output of uname instead of i386?
! echo i386-pc-interix
! exit 0 ;;
! i*:UWIN*:*)
! echo ${UNAME_MACHINE}-pc-uwin
exit 0 ;;
p*:CYGWIN*:*)
! echo powerpcle-unknown-cygwin
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
! echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
+
# The BFD linker knows what the default object file format is, so
! # first see if it will tell us. cd to the root directory to prevent
! # problems with other programs or directories called `ld' in the path.
! ld_help_string=`cd /; ld --help 2>&1`
! ld_supported_emulations=`echo $ld_help_string \
! | sed -ne '/supported emulations:/!d
! s/[ ][ ]*/ /g
! s/.*supported emulations: *//
! s/ .*//
! p'`
! case "$ld_supported_emulations" in
! *ia64)
! echo "${UNAME_MACHINE}-unknown-linux"
! exit 0
! ;;
! i?86linux)
! echo "${UNAME_MACHINE}-pc-linux-gnuaout"
! exit 0
! ;;
! i?86coff)
! echo "${UNAME_MACHINE}-pc-linux-gnucoff"
! exit 0
! ;;
! sparclinux)
! echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
! exit 0
! ;;
! armlinux)
! echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
! exit 0
! ;;
! elf32arm*)
! echo "${UNAME_MACHINE}-unknown-linux-gnu"
! exit 0
! ;;
! armelf_linux*)
! echo "${UNAME_MACHINE}-unknown-linux-gnu"
! exit 0
! ;;
! m68klinux)
! echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
! exit 0
! ;;
! elf32ppc)
! # Determine Lib Version
! cat >$dummy.c <<EOF
! #include <features.h>
! #if defined(__GLIBC__)
! extern char __libc_version[];
! extern char __libc_release[];
! #endif
main(argc, argv)
! int argc;
! char *argv[];
{
+ #if defined(__GLIBC__)
+ printf("%s %s\n", __libc_version, __libc_release);
+ #else
+ printf("unkown\n");
+ #endif
+ return 0;
+ }
+ EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ ./$dummy | grep 1\.99 > /dev/null
+ if test "$?" = 0 ; then
+ LIBC="libc1"
+ fi
+ fi
+ rm -f $dummy.c $dummy
+ echo powerpc-unknown-linux-gnu${LIBC}
+ exit 0
+ ;;
+ esac
+
+ if test "${UNAME_MACHINE}" = "alpha" ; then
+ sed 's/^ //' <<EOF >$dummy.s
+ .globl main
+ .ent main
+ main:
+ .frame \$30,0,\$26,0
+ .prologue 0
+ .long 0x47e03d80 # implver $0
+ lda \$2,259
+ .long 0x47e20c21 # amask $2,$1
+ srl \$1,8,\$2
+ sll \$2,2,\$2
+ sll \$0,3,\$0
+ addl \$1,\$0,\$0
+ addl \$2,\$0,\$0
+ ret \$31,(\$26),1
+ .end main
+ EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ ./$dummy
+ case "$?" in
+ 7)
+ UNAME_MACHINE="alpha"
+ ;;
+ 15)
+ UNAME_MACHINE="alphaev5"
+ ;;
+ 14)
+ UNAME_MACHINE="alphaev56"
+ ;;
+ 10)
+ UNAME_MACHINE="alphapca56"
+ ;;
+ 16)
+ UNAME_MACHINE="alphaev6"
+ ;;
+ esac
+
+ objdump --private-headers $dummy | \
+ grep ld.so.1 > /dev/null
+ if test "$?" = 0 ; then
+ LIBC="libc1"
+ fi
+ fi
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+ elif test "${UNAME_MACHINE}" = "mips" ; then
+ cat >$dummy.c <<EOF
+ #ifdef __cplusplus
+ int main (int argc, char *argv[]) {
+ #else
+ int main (argc, argv) int argc; char *argv[]; {
+ #endif
+ #ifdef __MIPSEB__
+ printf ("%s-unknown-linux-gnu\n", argv[1]);
+ #endif
+ #ifdef __MIPSEL__
+ printf ("%sel-unknown-linux-gnu\n", argv[1]);
+ #endif
+ return 0;
+ }
+ EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ else
+ # Either a pre-BFD a.out linker (linux-gnuoldld)
+ # or one that does not give us useful --help.
+ # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+ # If ld does not provide *any* "supported emulations:"
+ # that means it is gnuoldld.
+ echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+ test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+ case "${UNAME_MACHINE}" in
+ i?86)
+ VENDOR=pc;
+ ;;
+ *)
+ VENDOR=unknown;
+ ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ cat >$dummy.c <<EOF
+ #include <features.h>
+ #ifdef __cplusplus
+ int main (int argc, char *argv[]) {
+ #else
+ int main (argc, argv) int argc; char *argv[]; {
+ #endif
#ifdef __ELF__
! # ifdef __GLIBC__
! # if __GLIBC__ >= 2
! printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
! # else
! printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
! # endif
! # else
! printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
! # endif
#else
! printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
#endif
return 0;
}
EOF
! $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
! rm -f $dummy.c $dummy
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
+ i?86:UNIX_SV:4.2MP:2.*)
+ # Unixwar...
[truncated message content] |
|
From: <ivt...@li...> - 2001-11-20 20:16:15
|
Patch: ivtools-011121-johnston-009 For: ivtools-1.0 Author: joh...@us... Subject: architecture-independent imake tweak for NetBSD Requires: This is an intermediate patch to ivtools-1.0. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - architecture-independent imake tweak for NetBSD Index: config_ivtools/site.def.NETBSD diff -c config_ivtools/site.def.NETBSD:1.3 config_ivtools/site.def.NETBSD:1.4 *** config_ivtools/site.def.NETBSD:1.3 Tue Nov 20 08:48:13 2001 --- config/site.def.NETBSD Wed Nov 21 04:24:26 2001 *************** *** 56,62 **** #ifndef ImakeFlags #define ImakeFlags \ @@\ ! -T IMAKE_TEMPLATE -Ui386 \ @@\ ImakeIncludes\ @@\ $(SPECIAL_IMAKEFLAGS) #endif --- 56,62 ---- #ifndef ImakeFlags #define ImakeFlags \ @@\ ! -T IMAKE_TEMPLATE -U$(MACHINE_ARCH) \ @@\ ImakeIncludes\ @@\ $(SPECIAL_IMAKEFLAGS) #endif *** /dev/null Wed Nov 21 04:24:28 PST 2001 --- patches/ivtools-011121-johnston-009 *************** patches/ivtools-011121-johnston-009 *** 0 **** --- 1 ---- + ivtools-011121-johnston-009 |
|
From: <ivt...@li...> - 2001-11-20 18:28:42
|
Patch: ivtools-011121-johnston-008
For: ivtools-1.0
Author: joh...@us...
Subject: add ComUnidraw/pixelfunc.[ch]
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add ComUnidraw/pixelfunc.[ch]
Index: ComUnidraw/pixelfunc.c
diff -c /dev/null ComUnidraw/pixelfunc.c:1.1
*** /dev/null Wed Nov 21 02:36:47 2001
--- src/ComUnidraw/pixelfunc.c Wed Nov 21 02:36:46 2001
***************
*** 0 ****
--- 1,130 ----
+ /*
+ * Copyright (c) 2001 Scott E. Johnston
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of the copyright holders not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission. The copyright holders make
+ * no representations about the suitability of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+ #include <ComUnidraw/pixelfunc.h>
+
+ #include <OverlayUnidraw/ovraster.h>
+ #include <Unidraw/Graphic/damage.h>
+ #include <Unidraw/viewer.h>
+
+ /*****************************************************************************/
+
+ PixelPokeFunc::PixelPokeFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) {
+ }
+
+ void PixelPokeFunc::execute() {
+ Viewer* viewer = _ed->GetViewer();
+
+ ComValue rastcompv(stack_arg(0));
+ ComValue xv(stack_arg(1));
+ ComValue yv(stack_arg(2));
+ ComValue valv(stack_arg(3));
+ reset_stack();
+
+ RasterOvComp* rastcomp = (RasterOvComp*) rastcompv.geta(RasterOvComp::class_symid());
+ OverlayRasterRect* rastrect = rastcomp ? rastcomp->GetOverlayRasterRect() : nil;
+ OverlayRaster* raster = rastrect ? rastrect->GetOriginal() : nil;
+
+ if (raster) {
+ raster->poke(xv.int_val(), yv.int_val(), valv.float_val(), valv.float_val(), valv.float_val(), 1.0);
+ push_stack(rastcompv);
+ } else
+ push_stack(ComValue::nullval());
+
+
+ }
+
+ /*****************************************************************************/
+
+ PixelColsFunc::PixelColsFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) {
+ }
+
+ void PixelColsFunc::execute() {
+ Viewer* viewer = _ed->GetViewer();
+
+ ComValue rastcompv(stack_arg(0));
+ reset_stack();
+
+ RasterOvComp* rastcomp = (RasterOvComp*) rastcompv.geta(RasterOvComp::class_symid());
+ OverlayRasterRect* rastrect = rastcomp ? rastcomp->GetOverlayRasterRect() : nil;
+ OverlayRaster* raster = rastrect ? rastrect->GetOriginal() : nil;
+
+ if (raster) {
+ ComValue retval(raster->pwidth());
+ push_stack(retval);
+ } else
+ push_stack(ComValue::nullval());
+
+
+ }
+
+ /*****************************************************************************/
+
+ PixelRowsFunc::PixelRowsFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) {
+ }
+
+ void PixelRowsFunc::execute() {
+ Viewer* viewer = _ed->GetViewer();
+
+ ComValue rastcompv(stack_arg(0));
+ reset_stack();
+
+ RasterOvComp* rastcomp = (RasterOvComp*) rastcompv.geta(RasterOvComp::class_symid());
+ OverlayRasterRect* rastrect = rastcomp ? rastcomp->GetOverlayRasterRect() : nil;
+ OverlayRaster* raster = rastrect ? rastrect->GetOriginal() : nil;
+
+ if (raster) {
+ ComValue retval(raster->pheight());
+ push_stack(retval);
+ } else
+ push_stack(ComValue::nullval());
+
+
+ }
+
+ /*****************************************************************************/
+
+ PixelFlushFunc::PixelFlushFunc(ComTerp* comterp, Editor* ed) : UnidrawFunc(comterp, ed) {
+ }
+
+ void PixelFlushFunc::execute() {
+ Viewer* viewer = _ed->GetViewer();
+
+ ComValue rastcompv(stack_arg(0));
+ reset_stack();
+
+ RasterOvComp* rastcomp = (RasterOvComp*) rastcompv.geta(RasterOvComp::class_symid());
+ OverlayRasterRect* rastrect = rastcomp ? rastcomp->GetOverlayRasterRect() : nil;
+ OverlayRaster* raster = rastrect ? rastrect->GetOriginal() : nil;
+
+ if (raster) {
+ raster->flush();
+ viewer->GetDamage()->Incur(rastrect);
+ ComValue retval(rastcompv);
+ push_stack(retval);
+ } else
+ push_stack(ComValue::nullval());
+
+
+ }
+
Index: ComUnidraw/pixelfunc.h
diff -c /dev/null ComUnidraw/pixelfunc.h:1.1
*** /dev/null Wed Nov 21 02:36:47 2001
--- src/ComUnidraw/pixelfunc.h Wed Nov 21 02:36:46 2001
***************
*** 0 ****
--- 1,68 ----
+ /*
+ * Copyright (c) 2001 Scott E. Johnston
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of the copyright holders not be used in
+ * advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission. The copyright holders make
+ * no representations about the suitability of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+ #if !defined(pixelfunc_h)
+ #define _pixelfunc_h
+
+ #include <ComUnidraw/unifunc.h>
+
+ //: command to poke pixel values into raster
+ // poke(compview x y val) -- poke pixel value into raster
+ class PixelPokeFunc : public UnidrawFunc {
+ public:
+ PixelPokeFunc(ComTerp*,Editor*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "%s(compview x y val) -- poke pixel value into raster"; }
+ };
+
+ //: command to return number of columns in a raster
+ // pcols(compview) -- number of columns in a raster
+ class PixelColsFunc : public UnidrawFunc {
+ public:
+ PixelColsFunc(ComTerp*,Editor*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "%s(compview) -- number of columns in a raster"; }
+ };
+
+ //: command to return number of rows in a raster
+ // pcols(compview) -- number of rows in a raster
+ class PixelRowsFunc : public UnidrawFunc {
+ public:
+ PixelRowsFunc(ComTerp*,Editor*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "%s(compview) -- number of rows in a raster"; }
+ };
+
+ //: command to flush pixels poked in a raster
+ // pflush(compview) -- flush pixels poked into a raster
+ class PixelFlushFunc : public UnidrawFunc {
+ public:
+ PixelFlushFunc(ComTerp*,Editor*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "%s(compview) -- flush pixels poked into a raster"; }
+ };
+ #endif /* !defined(_pixelfunc_h) */
*** /dev/null Wed Nov 21 02:37:01 PST 2001
--- patches/ivtools-011121-johnston-008
*************** patches/ivtools-011121-johnston-008
*** 0 ****
--- 1 ----
+ ivtools-011121-johnston-008
|
|
From: <ivt...@li...> - 2001-11-20 00:47:44
|
Patch: ivtools-011120-johnston-007 For: ivtools-1.0 Author: joh...@us... Subject: 2nd attempt at supporting NetBSD packaging Requires: This is an intermediate patch to ivtools-1.0. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - 2nd attempt at supporting packaging of ivtools on NetBSD. Seems there is a problem with pathnames that include an i386 directory, which is expanded to 1 by the c-preprocessor (invoked by imake). This patch attempts to fix the problem by adding a -Ui386 to the imake command line (in config/site.def.NETBSD). More of these could be added to that command line for other platforms if necessary. Index: top_ivtools/configure diff -c top_ivtools/configure:1.2 top_ivtools/configure:1.3 *** top_ivtools/configure:1.2 Tue Nov 20 03:24:18 2001 --- ./configure Tue Nov 20 08:31:11 2001 *************** *** 2212,2219 **** echo ABSTOP = `pwd` >>config/config.mk echo writing \"CPU = `make CPU`\" echo CPU = `make CPU` >>config/config.mk - echo writing \"ARCH = $host_cpu\" - echo ARCH = $host_cpu >>config/config.mk echo writing \"LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2\" echo LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2 >>config/config.mk echo writing \"LIBSTDCPLUSPLUS3 = $LIBSTDCPLUSPLUS3\" --- 2212,2217 ---- Index: top_ivtools/configure.in diff -c top_ivtools/configure.in:1.2 top_ivtools/configure.in:1.3 *** top_ivtools/configure.in:1.2 Tue Nov 20 03:24:18 2001 --- ./configure.in Tue Nov 20 08:31:11 2001 *************** *** 416,423 **** echo ABSTOP = `pwd` >>config/config.mk echo writing \"CPU = `make CPU`\" echo CPU = `make CPU` >>config/config.mk - echo writing \"ARCH = $host_cpu\" - echo ARCH = $host_cpu >>config/config.mk echo writing \"LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2\" echo LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2 >>config/config.mk echo writing \"LIBSTDCPLUSPLUS3 = $LIBSTDCPLUSPLUS3\" --- 416,421 ---- Index: site.def.NETBSD =================================================================== RCS file: /home/scott/src/ivtools-1.0/cm/config_ivtools/site.def.NETBSD,v retrieving revision 1.1 retrieving revision 1.3 diff -c -r1.1 -r1.3 *** site.def.NETBSD 2001/11/02 21:08:11 1.1 --- site.def.NETBSD 2001/11/20 16:48:13 1.3 *************** *** 54,59 **** --- 54,66 ---- $(RM) dest/Concat(lib,libname.so) #endif + #ifndef ImakeFlags + #define ImakeFlags \ @@\ + -T IMAKE_TEMPLATE -Ui386 \ @@\ + ImakeIncludes\ @@\ + $(SPECIAL_IMAKEFLAGS) + #endif + /* file output by configure script */ #include "config-netbsd-gcc.defs" *** /dev/null Tue Nov 20 08:31:39 PST 2001 --- patches/ivtools-011120-johnston-007 *************** patches/ivtools-011120-johnston-007 *** 0 **** --- 1 ---- + ivtools-011120-johnston-007 |
|
From: <ivt...@li...> - 2001-11-19 21:40:16
|
Patch: ivtools-011120-johnston-006 For: ivtools-1.0 Author: joh...@us... Subject: adds ARCH variable to make config file Requires: This is an intermediate patch to ivtools-1.0. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - adds ARCH variable to make config file (cpu_host from configure script). For use of NetBSD packaging system. Otherwise ignored. Index: top_ivtools/configure diff -c top_ivtools/configure:1.1 top_ivtools/configure:1.2 *** top_ivtools/configure:1.1 Fri Nov 2 13:04:34 2001 --- ./configure Tue Nov 20 03:24:18 2001 *************** *** 2212,2217 **** --- 2212,2219 ---- echo ABSTOP = `pwd` >>config/config.mk echo writing \"CPU = `make CPU`\" echo CPU = `make CPU` >>config/config.mk + echo writing \"ARCH = $host_cpu\" + echo ARCH = $host_cpu >>config/config.mk echo writing \"LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2\" echo LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2 >>config/config.mk echo writing \"LIBSTDCPLUSPLUS3 = $LIBSTDCPLUSPLUS3\" Index: top_ivtools/configure.in diff -c top_ivtools/configure.in:1.1 top_ivtools/configure.in:1.2 *** top_ivtools/configure.in:1.1 Fri Nov 2 13:04:34 2001 --- ./configure.in Tue Nov 20 03:24:18 2001 *************** *** 416,421 **** --- 416,423 ---- echo ABSTOP = `pwd` >>config/config.mk echo writing \"CPU = `make CPU`\" echo CPU = `make CPU` >>config/config.mk + echo writing \"ARCH = $host_cpu\" + echo ARCH = $host_cpu >>config/config.mk echo writing \"LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2\" echo LIBSTDCPLUSPLUS2 = $LIBSTDCPLUSPLUS2 >>config/config.mk echo writing \"LIBSTDCPLUSPLUS3 = $LIBSTDCPLUSPLUS3\" Index: config_ivtools/config.mk *** /dev/null Tue Nov 20 03:24:32 PST 2001 --- patches/ivtools-011120-johnston-006 *************** patches/ivtools-011120-johnston-006 *** 0 **** --- 1 ---- + ivtools-011120-johnston-006 |
|
From: <ivt...@li...> - 2001-11-16 18:32:14
|
Patch: ivtools-011116-johnston-004
For: ivtools-1.0
Author: joh...@us...
Subject: add an undocumented debug func, stackheight
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add an undocumented debug func, stackheight
Index: ComTerp/comterp.c
diff -c ComTerp/comterp.c:1.1 ComTerp/comterp.c:1.2
*** ComTerp/comterp.c:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/comterp.c Fri Nov 16 10:25:13 2001
***************
*** 1018,1023 ****
--- 1018,1024 ----
add_command("trace", new ComterpTraceFunc(this));
add_command("pause", new ComterpPauseFunc(this));
add_command("step", new ComterpStepFunc(this));
+ add_command("stackheight", new ComterpStackHeightFunc(this));
add_command("symid", new SymIdFunc(this));
add_command("symval", new SymValFunc(this));
add_command("symbol", new SymbolFunc(this));
Index: ComTerp/debugfunc.c
diff -c ComTerp/debugfunc.c:1.1 ComTerp/debugfunc.c:1.2
*** ComTerp/debugfunc.c:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/debugfunc.c Fri Nov 16 10:25:13 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 2000 IET Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 178,183 ****
--- 179,196 ----
ComValue retval(comterp()->stepflag());
push_stack(retval);
}
+ }
+
+
+ /*****************************************************************************/
+
+ ComterpStackHeightFunc::ComterpStackHeightFunc(ComTerp* comterp) : ComFunc(comterp) {
+ }
+
+ void ComterpStackHeightFunc::execute() {
+ reset_stack();
+ ComValue retval(comterp()->stack_height());
+ push_stack(retval);
}
Index: ComTerp/debugfunc.h
diff -c ComTerp/debugfunc.h:1.1 ComTerp/debugfunc.h:1.2
*** ComTerp/debugfunc.h:1.1 Fri Nov 2 13:04:49 2001
--- src/ComTerp/debugfunc.h Fri Nov 16 10:25:13 2001
***************
*** 68,71 ****
--- 68,81 ----
virtual boolean stepfunc() { return true; }
};
+ //: command to toggle step script execution
+ // pause -- toggle stepwise script execution
+ class ComterpStackHeightFunc : public ComFunc {
+ public:
+ ComterpStackHeightFunc(ComTerp*);
+ virtual void execute();
+ virtual const char* docstring() {
+ return "%s -- return stack height for debug purposes"; }
+ };
+
#endif /* !defined(_debugfunc_h) */
Index: ComUnidraw/comeditor.c
diff -c ComUnidraw/comeditor.c:1.2 ComUnidraw/comeditor.c:1.3
*** ComUnidraw/comeditor.c:1.2 Tue Nov 13 10:14:40 2001
--- src/ComUnidraw/comeditor.c Fri Nov 16 10:25:20 2001
***************
*** 212,217 ****
--- 212,218 ----
comterp->add_command("poke", new PixelPokeFunc(comterp, this));
comterp->add_command("pcols", new PixelColsFunc(comterp, this));
comterp->add_command("prows", new PixelRowsFunc(comterp, this));
+ comterp->add_command("pflush", new PixelFlushFunc(comterp, this));
}
/* virtual */ void ComEditor::ExecuteCmd(Command* cmd) {
Index: comdraw/README
diff -c comdraw/README:1.2 comdraw/README:1.3
*** comdraw/README:1.2 Tue Nov 13 10:14:41 2001
--- src/comdraw/README Fri Nov 16 10:25:21 2001
***************
*** 118,123 ****
--- 118,124 ----
poke(compview x y val) -- poke pixel value into raster
pcols(compview) -- number of columns in a raster
pcols(compview) -- number of rows in a raster
+ pflush(compview) -- flush pixels poked into a raster
PLOTTING COMMANDS
Index: man1_ivtools/comdraw.1
diff -c man1_ivtools/comdraw.1:1.2 man1_ivtools/comdraw.1:1.3
*** man1_ivtools/comdraw.1:1.2 Tue Nov 13 10:14:47 2001
--- src/man/man1/comdraw.1 Fri Nov 16 10:25:26 2001
***************
*** 127,132 ****
--- 127,133 ----
poke(compview x y val) -- poke pixel value into raster
pcols(compview) -- number of columns in a raster
pcols(compview) -- number of rows in a raster
+ pflush(compview) -- flush pixels poked into a raster
.SH PLOTTING COMMANDS
*** /dev/null Fri Nov 16 10:25:28 PST 2001
--- patches/ivtools-011116-johnston-004
*************** patches/ivtools-011116-johnston-004
*** 0 ****
--- 1 ----
+ ivtools-011116-johnston-004
|
|
From: <ivt...@li...> - 2001-11-16 18:32:07
|
Patch: ivtools-011116-johnston-003 For: ivtools-1.0 Author: joh...@us... Subject: fix bug in comterp stream traversal Requires: This is an intermediate patch to ivtools-1.0. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - fix bug in comterp stream traversal via NextFunc::execute_impl. It was leaving an extra null-value on the stack, which confused the interpreter. Index: ComTerp/strmfunc.c diff -c ComTerp/strmfunc.c:1.1 ComTerp/strmfunc.c:1.2 *** ComTerp/strmfunc.c:1.1 Tue Nov 13 15:48:32 2001 --- src/ComTerp/strmfunc.c Fri Nov 16 08:41:11 2001 *************** *** 401,407 **** /* sub-stream return null, zero it, and return null for this one */ val->stream_list()->clear(); - comterp->push_stack(ComValue::nullval()); streamv.stream_list()->clear(); return; } else if (comterp->stack_height()==inside_stackh) --- 401,406 ---- *** /dev/null Fri Nov 16 08:42:43 PST 2001 --- patches/ivtools-011116-johnston-003 *************** patches/ivtools-011116-johnston-003 *** 0 **** --- 1 ---- + ivtools-011116-johnston-003 |
|
From: <ivt...@li...> - 2001-11-16 18:32:03
|
Patch: ivtools-011114-johnston-002
For: ivtools-1.0
Author: joh...@us...
Subject: fix problems with zero-point polygons
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- sometimes you can accidentally create a polygon with zero points (or
a multi-line or spline). These are changes to safeguard against
crashing whenever this happens.
Index: src_iv-2_6/xpainter.c
diff -c src_iv-2_6/xpainter.c:1.1 src_iv-2_6/xpainter.c:1.2
*** src_iv-2_6/xpainter.c:1.1 Tue Nov 13 15:50:09 2001
--- src/IV-2_6/xpainter.c Wed Nov 14 15:27:01 2001
***************
*** 745,751 ****
}
void Painter::RasterRect(Canvas* c, IntCoord x, IntCoord y, Raster* r) {
! if (c == nil) {
return;
}
Display* d = r->rep()->display_;
--- 745,751 ----
}
void Painter::RasterRect(Canvas* c, IntCoord x, IntCoord y, Raster* r) {
! if (c == nil || r == nil) {
return;
}
Display* d = r->rep()->display_;
***************
*** 798,804 ****
}
void Painter::Text(Canvas* c, const char* s, int len, IntCoord x, IntCoord y) {
! if (c == nil) {
return;
}
XDisplay* d = rep->display->rep()->display_;
--- 798,804 ----
}
void Painter::Text(Canvas* c, const char* s, int len, IntCoord x, IntCoord y) {
! if (c == nil || s == nil || len == 0) {
return;
}
XDisplay* d = rep->display->rep()->display_;
***************
*** 906,912 ****
}
void Painter::MultiPoint(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 906,912 ----
}
void Painter::MultiPoint(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1030,1036 ****
}
void Painter::Circle(Canvas* c, IntCoord x, IntCoord y, int r) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1030,1036 ----
}
void Painter::Circle(Canvas* c, IntCoord x, IntCoord y, int r) {
! if (c == nil || r == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1057,1063 ****
}
void Painter::FillCircle(Canvas* c, IntCoord x, IntCoord y, int r) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1057,1063 ----
}
void Painter::FillCircle(Canvas* c, IntCoord x, IntCoord y, int r) {
! if (c == nil || r == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1084,1090 ****
}
void Painter::MultiLine(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1084,1090 ----
}
void Painter::MultiLine(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1100,1106 ****
}
void Painter::MultiLineNoMap(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1100,1106 ----
}
void Painter::MultiLineNoMap(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1117,1123 ****
}
void Painter::Polygon(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1117,1123 ----
}
void Painter::Polygon(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n==0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1138,1144 ****
}
void Painter::FillPolygonNoMap(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1138,1144 ----
}
void Painter::FillPolygonNoMap(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n == 0) {
return;
}
CanvasRep* cr = c->rep();
***************
*** 1157,1163 ****
}
void Painter::FillPolygon(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil) {
return;
}
CanvasRep* cr = c->rep();
--- 1157,1163 ----
}
void Painter::FillPolygon(Canvas* c, IntCoord x[], IntCoord y[], int n) {
! if (c == nil || n == 0) {
return;
}
CanvasRep* cr = c->rep();
Index: Unidraw/verts.c
diff -c Unidraw/verts.c:1.1 Unidraw/verts.c:1.2
*** Unidraw/verts.c:1.1 Tue Nov 13 15:57:03 2001
--- src/Unidraw/verts.c Wed Nov 14 15:27:42 2001
***************
*** 49,56 ****
}
int Vertices::GetOriginal (const Coord*& x, const Coord*& y) {
! x = _pts->x();
! y = _pts->y();
return count();
}
--- 49,56 ----
}
int Vertices::GetOriginal (const Coord*& x, const Coord*& y) {
! x = _pts ? _pts->x() : nil;
! y = _pts ? _pts->y() : nil;
return count();
}
***************
*** 125,131 ****
} else {
width = float(gs->GetBrush()->Width());
tol = (width > 1) ? width/2 : 0;
! bx0 = bx1 = x()[0]; by0 = by1 = y()[0];
for (int i = 1; i < count(); ++i) {
bx0 = min(bx0, float(x()[i]));
--- 125,132 ----
} else {
width = float(gs->GetBrush()->Width());
tol = (width > 1) ? width/2 : 0;
! bx0 = bx1 = x() ? x()[0] : 0.0;
! by0 = by1 = y() ? y()[0] : 0.0;
for (int i = 1; i < count(); ++i) {
bx0 = min(bx0, float(x()[i]));
Index: UniIdraw/idarrows.c
diff -c UniIdraw/idarrows.c:1.1 UniIdraw/idarrows.c:1.2
*** UniIdraw/idarrows.c:1.1 Tue Nov 13 15:57:25 2001
--- src/UniIdraw/idarrows.c Wed Nov 14 15:27:54 2001
***************
*** 403,408 ****
--- 403,410 ----
}
void ArrowMultiLine::SetArrows (boolean h, boolean t) {
+ if (count()==0) return;
+
delete _head;
delete _tail;
Index: OverlayUnidraw/ovcomps.h
diff -c OverlayUnidraw/ovcomps.h:1.1 OverlayUnidraw/ovcomps.h:1.2
*** OverlayUnidraw/ovcomps.h:1.1 Tue Nov 13 15:58:41 2001
--- src/OverlayUnidraw/ovcomps.h Wed Nov 14 15:27:59 2001
***************
*** 80,86 ****
void SetAnnotation(const char*);
// set the annotation string for this component.
OverlayView* FindView(Viewer*);
! // return the view for this compoent (for this subject) in a specific viewer.
virtual void SetPathName(const char*);
// set pathname associated with this component.
--- 80,86 ----
void SetAnnotation(const char*);
// set the annotation string for this component.
OverlayView* FindView(Viewer*);
! // return the view for this component (for this subject) in a specific viewer.
virtual void SetPathName(const char*);
// set pathname associated with this component.
Index: OverlayUnidraw/ovpainter.c
diff -c OverlayUnidraw/ovpainter.c:1.1 OverlayUnidraw/ovpainter.c:1.2
*** OverlayUnidraw/ovpainter.c:1.1 Tue Nov 13 15:58:47 2001
--- src/OverlayUnidraw/ovpainter.c Wed Nov 14 15:28:00 2001
***************
*** 1077,1083 ****
void OverlayPainter::DoRasterRect(
Canvas* c, IntCoord x, IntCoord y, OverlayRaster* o_r, OverlayRasterRect* r_r
) {
! if (c == nil) {
return;
}
--- 1077,1083 ----
void OverlayPainter::DoRasterRect(
Canvas* c, IntCoord x, IntCoord y, OverlayRaster* o_r, OverlayRasterRect* r_r
) {
! if (c == nil || r_r == nil) {
return;
}
Index: OverlayUnidraw/ovvertices.c
diff -c OverlayUnidraw/ovvertices.c:1.1 OverlayUnidraw/ovvertices.c:1.2
*** OverlayUnidraw/ovvertices.c:1.1 Tue Nov 13 15:58:54 2001
--- src/OverlayUnidraw/ovvertices.c Wed Nov 14 15:28:00 2001
***************
*** 238,244 ****
Vertices* vert = *(Vertices**)addr2;
int id;
in >> id;
! vert->SetOriginal(comp->GetIndexedPts(id));
return in.good() ? 0 : -1;
}
--- 238,245 ----
Vertices* vert = *(Vertices**)addr2;
int id;
in >> id;
! if (id>=0)
! vert->SetOriginal(comp->GetIndexedPts(id));
return in.good() ? 0 : -1;
}
Index: OverlayUnidraw/scriptview.c
diff -c OverlayUnidraw/scriptview.c:1.1 OverlayUnidraw/scriptview.c:1.2
*** OverlayUnidraw/scriptview.c:1.1 Tue Nov 13 15:58:56 2001
--- src/OverlayUnidraw/scriptview.c Wed Nov 14 15:28:00 2001
***************
*** 709,715 ****
boolean OverlayScript::EmitPts(ostream& out, Clipboard* cb, boolean prevout) {
if (GetGraphicComp()->IsA(OVVERTICES_COMP) && MatchedPts(cb)<0) {
MultiLineObj* pts = ((Vertices*)GetGraphicComp()->GetGraphic())->GetOriginal();
! if (pts->count()>0) {
if (prevout)
out << ",\n ";
else
--- 709,715 ----
boolean OverlayScript::EmitPts(ostream& out, Clipboard* cb, boolean prevout) {
if (GetGraphicComp()->IsA(OVVERTICES_COMP) && MatchedPts(cb)<0) {
MultiLineObj* pts = ((Vertices*)GetGraphicComp()->GetGraphic())->GetOriginal();
! if (pts && pts->count()>0) {
if (prevout)
out << ",\n ";
else
*** /dev/null Wed Nov 14 15:28:43 PST 2001
--- patches/ivtools-011114-johnston-002
*************** patches/ivtools-011114-johnston-002
*** 0 ****
--- 1 ----
+ ivtools-011114-johnston-002
|
|
From: <ivt...@li...> - 2001-11-13 18:28:40
|
Patch: ivtools-011113-johnston-001
For: ivtools-1.0
Author: joh...@us...
Subject: add comdraw funcs to poke pixels and return raster extent
Requires:
This is an intermediate patch to ivtools-1.0. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- add comdraw funcs to poke (grey-level) pixel values into a raster,
and return the horizontal and vertical extent of the raster:
poke(compview x y val) -- poke pixel value into raster
pcols(compview) -- number of columns in a raster
pcols(compview) -- number of rows in a raster
Index: top_ivtools/MANIFEST
diff -c top_ivtools/MANIFEST:1.1 top_ivtools/MANIFEST:1.2
*** top_ivtools/MANIFEST:1.1 Fri Nov 2 13:04:34 2001
--- ./MANIFEST Tue Nov 13 10:14:25 2001
***************
*** 221,226 ****
--- 221,228 ----
ivtools-1.0/src/ComUnidraw/highlightfunc.h
ivtools-1.0/src/ComUnidraw/nfunc.c
ivtools-1.0/src/ComUnidraw/nfunc.h
+ ivtools-1.0/src/ComUnidraw/pixelfunc.c
+ ivtools-1.0/src/ComUnidraw/pixelfunc.h
ivtools-1.0/src/ComUnidraw/plotfunc.c
ivtools-1.0/src/ComUnidraw/plotfunc.h
ivtools-1.0/src/ComUnidraw/unifunc.c
Index: top_ivtools/MANIFEST.perceps
diff -c top_ivtools/MANIFEST.perceps:1.1 top_ivtools/MANIFEST.perceps:1.2
*** top_ivtools/MANIFEST.perceps:1.1 Fri Nov 2 13:04:34 2001
--- ./MANIFEST.perceps Tue Nov 13 10:14:25 2001
***************
*** 58,63 ****
--- 58,64 ----
ComUnidraw/grstatfunc.h
ComUnidraw/highlightfunc.h
ComUnidraw/nfunc.h
+ ComUnidraw/pixelfunc.h
ComUnidraw/plotfunc.h
ComUnidraw/unifunc.h
ComUtil/comterp.h
Index: ComUnidraw/Imakefile
diff -c ComUnidraw/Imakefile:1.1 ComUnidraw/Imakefile:1.2
*** ComUnidraw/Imakefile:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/Imakefile Tue Nov 13 10:14:40 2001
***************
*** 27,32 ****
--- 27,33 ----
Obj26(comterp-iohandler)
Obj26(dialogfunc)
Obj26(nfunc)
+ Obj26(pixelfunc)
Obj26(plotfunc)
Obj26(unifunc)
Index: ComUnidraw/comeditor.c
diff -c ComUnidraw/comeditor.c:1.1 ComUnidraw/comeditor.c:1.2
*** ComUnidraw/comeditor.c:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/comeditor.c Tue Nov 13 10:14:40 2001
***************
*** 32,37 ****
--- 32,38 ----
#include <ComUnidraw/comterp-iohandler.h>
#include <ComUnidraw/dialogfunc.h>
#include <ComUnidraw/nfunc.h>
+ #include <ComUnidraw/pixelfunc.h>
#include <ComUnidraw/plotfunc.h>
#include <ComTerp/ctrlfunc.h>
***************
*** 207,212 ****
--- 208,217 ----
comterp->add_command("dtos", new DrawingToScreenFunc(comterp, this));
comterp->add_command("stod", new ScreenToDrawingFunc(comterp, this));
+
+ comterp->add_command("poke", new PixelPokeFunc(comterp, this));
+ comterp->add_command("pcols", new PixelColsFunc(comterp, this));
+ comterp->add_command("prows", new PixelRowsFunc(comterp, this));
}
/* virtual */ void ComEditor::ExecuteCmd(Command* cmd) {
Index: ComUnidraw/grlistfunc.c
diff -c ComUnidraw/grlistfunc.c:1.1 ComUnidraw/grlistfunc.c:1.2
*** ComUnidraw/grlistfunc.c:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/grlistfunc.c Tue Nov 13 10:14:40 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 2000 IET Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 38,43 ****
--- 39,47 ----
void GrListAtFunc::execute() {
ComValue listv(stack_arg(0));
ComValue nv(stack_arg(1));
+ static int set_symid = symbol_add("set");
+ ComValue setv(stack_key(set_symid, false, ComValue::blankval(), true /* return blank if no :set */));
+ boolean setflag = !setv.is_blank();
if (listv.object_compview()) {
reset_stack();
Index: ComUnidraw/grlistfunc.h
diff -c ComUnidraw/grlistfunc.h:1.1 ComUnidraw/grlistfunc.h:1.2
*** ComUnidraw/grlistfunc.h:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/grlistfunc.h Tue Nov 13 10:14:40 2001
***************
*** 31,44 ****
#include <ComTerp/listfunc.h>
//: list member command for ComUnidraw
! // val=at(list|attrlist|compview n) -- return the nth item in a list.
class GrListAtFunc : public ComFunc {
public:
GrListAtFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "val=at(list|attrlist|compview n) -- return the nth item in a list"; }
};
//: list size command for Unidraw
--- 31,44 ----
#include <ComTerp/listfunc.h>
//: list member command for ComUnidraw
! // val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list.
class GrListAtFunc : public ComFunc {
public:
GrListAtFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list"; }
};
//: list size command for Unidraw
Index: ComUnidraw/nfunc.h
diff -c ComUnidraw/nfunc.h:1.1 ComUnidraw/nfunc.h:1.2
*** ComUnidraw/nfunc.h:1.1 Fri Nov 2 13:07:06 2001
--- src/ComUnidraw/nfunc.h Tue Nov 13 10:14:40 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 1998,1999 Vectaport Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 27,33 ****
#include <ComUnidraw/unifunc.h>
//: command to return number of onscreen columns in comdraw.
! // ncols() -- onscreen horizontal extent in pixels
class NColsFunc : public UnidrawFunc {
public:
NColsFunc(ComTerp*,Editor*);
--- 28,34 ----
#include <ComUnidraw/unifunc.h>
//: command to return number of onscreen columns in comdraw.
! // ncols() -- onscreen horizontal extent in pixels or
class NColsFunc : public UnidrawFunc {
public:
NColsFunc(ComTerp*,Editor*);
Index: comdraw/README
diff -c comdraw/README:1.1 comdraw/README:1.2
*** comdraw/README:1.1 Fri Nov 2 13:07:08 2001
--- src/comdraw/README Tue Nov 13 10:14:41 2001
***************
*** 75,81 ****
compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component
attrlist(compview) -- return attribute list of component
compview=frame([index]) -- return composite component for a frame, defaults to current
! val=at(list|attrlist|compview n) -- return the nth item in a list.
num=size(list|attrlist|compview) -- return size of a list.
VIEWER COMMANDS
--- 75,81 ----
compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component
attrlist(compview) -- return attribute list of component
compview=frame([index]) -- return composite component for a frame, defaults to current
! val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list.
num=size(list|attrlist|compview) -- return size of a list.
VIEWER COMMANDS
***************
*** 115,120 ****
--- 115,123 ----
IMAGING COMMANDS
tilefile(inpath outpath [xsize] [ysiz]) -- tile pgm or ppm image file
+ poke(compview x y val) -- poke pixel value into raster
+ pcols(compview) -- number of columns in a raster
+ pcols(compview) -- number of rows in a raster
PLOTTING COMMANDS
Index: man1_ivtools/comdraw.1
diff -c man1_ivtools/comdraw.1:1.1 man1_ivtools/comdraw.1:1.2
*** man1_ivtools/comdraw.1:1.1 Fri Nov 2 13:07:59 2001
--- src/man/man1/comdraw.1 Tue Nov 13 10:14:47 2001
***************
*** 83,89 ****
compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component
attrlist(compview) -- return attribute list of component
compview=frame([index]) -- return composite component for a frame, defaults to current
! val=at(list|attrlist|compview n) -- return the nth item in a list.
num=size(list|attrlist|compview) -- return size of a list.
.SH VIEWER COMMANDS
--- 83,89 ----
compview=setattr(compview [:keyword value [:keyword value [...]]]) -- set attributes of a graphic component
attrlist(compview) -- return attribute list of component
compview=frame([index]) -- return composite component for a frame, defaults to current
! val=at(list|attrlist|compview n :set val) -- return (or set) the nth item in a list.
num=size(list|attrlist|compview) -- return size of a list.
.SH VIEWER COMMANDS
***************
*** 123,129 ****
.SH IMAGING COMMANDS
! tilefile(inpath outpath [xsize] [ysiz]) -- tile pgm or ppm image file
.SH PLOTTING COMMANDS
--- 123,132 ----
.SH IMAGING COMMANDS
! tilefile(inpath outpath [xsize] [ysiz]) -- tile pgm or ppm image file
! poke(compview x y val) -- poke pixel value into raster
! pcols(compview) -- number of columns in a raster
! pcols(compview) -- number of rows in a raster
.SH PLOTTING COMMANDS
*** /dev/null Tue Nov 13 10:14:50 PST 2001
--- patches/ivtools-011113-johnston-001
*************** patches/ivtools-011113-johnston-001
*** 0 ****
--- 1 ----
+ ivtools-011113-johnston-001
|
|
From: <ivt...@li...> - 2001-11-02 20:49:17
|
Patch: ivtools-011102-johnston-082
For: ivtools-0.9.7
Author: joh...@us...
Subject: streaming operator tweak
Requires:
This is an intermediate patch to ivtools-0.9.7. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- streaming operator tweak
Index: top_ivtools/Imakefile
Index: ComTerp/strmfunc.c
diff -c ComTerp/strmfunc.c:1.11 ComTerp/strmfunc.c:1.12
*** ComTerp/strmfunc.c:1.11 Wed Oct 31 16:32:16 2001
--- src/ComTerp/strmfunc.c Fri Nov 2 12:45:53 2001
***************
*** 353,364 ****
if (!streamv.is_stream()) return;
if (streamv.stream_mode()<0) {
/* internal execution -- handled by stream func */
comterp->push_stack(streamv);
((ComFunc*)streamv.stream_func())->exec(1, 0);
! if (comterp->stack_top().is_null()) streamv.stream_list()->clear();
} else if (streamv.stream_mode()>0) {
--- 353,370 ----
if (!streamv.is_stream()) return;
+ int outside_stackh = comterp->stack_height();
+
if (streamv.stream_mode()<0) {
/* internal execution -- handled by stream func */
comterp->push_stack(streamv);
((ComFunc*)streamv.stream_func())->exec(1, 0);
! if (comterp->stack_top().is_null() &&
! comterp->stack_height()>outside_stackh)
! streamv.stream_list()->clear();
! else if (comterp->stack_height()==outside_stackh)
! comterp->push_stack(ComValue::blankval());
} else if (streamv.stream_mode()>0) {
***************
*** 375,380 ****
--- 381,388 ----
if (val->is_stream()) {
+ int inside_stackh = comterp->stack_height();
+
/* stream argument, use stream func to get next one */
if (val->stream_mode()<0 && val->stream_func()) {
/* internal use */
***************
*** 388,401 ****
}
! if (comterp->stack_top().is_null()) {
/* sub-stream return null, zero it, and return null for this one */
val->stream_list()->clear();
comterp->push_stack(ComValue::nullval());
streamv.stream_list()->clear();
return;
! }
narg++;
--- 396,411 ----
}
! if (comterp->stack_top().is_null() &&
! comterp->stack_height()>inside_stackh) {
/* sub-stream return null, zero it, and return null for this one */
val->stream_list()->clear();
comterp->push_stack(ComValue::nullval());
streamv.stream_list()->clear();
return;
! } else if (comterp->stack_height()==inside_stackh)
! comterp->push_stack(ComValue::blankval());
narg++;
***************
*** 415,421 ****
funcptr->exec(narg, nkey);
}
! if (comterp->stack_top().is_null()) streamv.stream_list()->clear();
} else
comterp->push_stack(ComValue::nullval());
--- 425,435 ----
funcptr->exec(narg, nkey);
}
! if (comterp->stack_top().is_null() &&
! comterp->stack_height() > outside_stackh)
! streamv.stream_list()->clear();
! else if (comterp->stack_height()==outside_stackh)
! comterp->push_stack(ComValue::blankval());
} else
comterp->push_stack(ComValue::nullval());
*** /dev/null Fri Nov 2 12:46:28 PST 2001
--- patches/ivtools-011102-johnston-082
*************** patches/ivtools-011102-johnston-082
*** 0 ****
--- 1 ----
+ ivtools-011102-johnston-082
|
|
From: <ivt...@li...> - 2001-11-02 00:07:42
|
Patch: ivtools-011101-johnston-081 For: ivtools-0.9.7 Author: joh...@us... Subject: doc changes Requires: This is an intermediate patch to ivtools-0.9.7. To apply, cd to the top-level directory of the ivtools source tree (the directory with src and config subdirs), and apply like this: patch -p0 <ThisFile Summary of Changes: - doc changes Index: top_ivtools/INSTALL diff -c top_ivtools/INSTALL:1.11 top_ivtools/INSTALL:1.12 *** top_ivtools/INSTALL:1.11 Tue Oct 16 17:23:43 2001 --- ./INSTALL Thu Nov 1 16:03:21 2001 *************** *** 45,51 **** ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ! ** http://www.vectaport.com/ivtools/faq.html#imakecppprob 0.d. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: --- 45,51 ---- ** can be troublesome (i.e. the default one delivered with Solaris or ** DEC Alpha). You'll want to rig your PATH environment variable to ** find the gcc variant of cpp. Read more about it at ! ** http://www.ivtools.org/ivtools/faq.html#imakecppprob 0.d. If you want to use the polygon intersection tools, acquire and build clippoly, a LGPLed library for polygon clipping from: *************** *** 169,175 **** Also you may want to review the rest of the entries in the site.def.<CPU> file to see if they are good defaults for your system. ! ** See http://www.vectaport.com/ivtools/faq.html for more info. 2. Compiling ivtools: --- 169,175 ---- Also you may want to review the rest of the entries in the site.def.<CPU> file to see if they are good defaults for your system. ! ** See http://www.ivtools.org/ivtools/faq.html for more info. 2. Compiling ivtools: *************** *** 194,200 **** If you have any trouble at this stage take a look at: ! http://www.vectaport.com/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make --- 194,200 ---- If you have any trouble at this stage take a look at: ! http://www.ivtools.org/ivtools/faq.html#SourceBuild ** Subsequent use of "make" will only do the "make -k" phase described ** above. To redo everything, either do a "make World", or do a "make Index: top_ivtools/README diff -c top_ivtools/README:1.8 top_ivtools/README:1.9 *** top_ivtools/README:1.8 Tue Oct 16 17:23:43 2001 --- ./README Thu Nov 1 16:03:21 2001 *************** *** 132,141 **** If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing ! list, ivt...@li..., or this e-mail address: ! ivt...@ve.... To subcribe to the mailing list, visit ! http://lists.sourceforge.net/mailman/listinfo/ivtools-user or send ! an informal request to ivt...@ve.... Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html --- 132,141 ---- If you have a question about this software, desire to add code, found a bug, want to request a feature, or wonder how to get further assistance, please send e-mail to the general purpose ivtools mailing ! list, ivt...@li..., or (for last resort) this ! e-mail address: ivt...@ve.... To subcribe to the ! mailing list, visit ! http://lists.sourceforge.net/mailman/listinfo/ivtools-user. Other ivtools related mailing lists can be found at: http://www.ivtools.org/ivtools/mailinglists.html Index: top_ivtools/README.ivmkcm diff -c top_ivtools/README.ivmkcm:1.1 top_ivtools/README.ivmkcm:1.2 *** top_ivtools/README.ivmkcm:1.1 Thu Jan 4 15:31:33 2001 --- ./README.ivmkcm Thu Nov 1 16:03:21 2001 *************** *** 1,7 **** ivmkcm is a set of Perl scripts that use CVS to manage source tree directories. The Makefile hierarchy of ivtools contains built-in targets described below that facilitate the hierarchical use of ! ivmkcm. You can acquire ivmkcm from http://www.vectaport.com/ivmkcm/. It is licensed under the GPL. This file documents the Makefile targets associated with ivmkcm, and --- 1,7 ---- ivmkcm is a set of Perl scripts that use CVS to manage source tree directories. The Makefile hierarchy of ivtools contains built-in targets described below that facilitate the hierarchical use of ! ivmkcm. You can acquire ivmkcm from http://www.ivtools.org/ivmkcm/. It is licensed under the GPL. This file documents the Makefile targets associated with ivmkcm, and Index: ComTerp/helpfunc.c diff -c ComTerp/helpfunc.c:1.9 ComTerp/helpfunc.c:1.10 *** ComTerp/helpfunc.c:1.9 Wed Oct 31 16:32:16 2001 --- src/ComTerp/helpfunc.c Thu Nov 1 16:03:24 2001 *************** *** 193,198 **** --- 193,199 ---- ComValue* value = comterp()->localvalue(opr_tbl_commid(op_ids[j])); if (value) { ComFunc* comfunc = (ComFunc*)value->obj_val(); + if (postevalflag.is_true() && !comfunc->post_eval()) continue; if (first) first = false; else Index: comterp/README diff -c comterp/README:1.10 comterp/README:1.11 *** comterp/README:1.10 Wed Oct 31 16:32:18 2001 --- src/comterp_/README Thu Nov 1 16:03:25 2001 *************** *** 277,280 **** comdraw WEB PAGES ! http://www.vectaport.com/ivtools/comterp.html --- 277,280 ---- comdraw WEB PAGES ! http://www.ivtools.org/ivtools/comterp.html Index: glyphs_ivtools/README diff -c glyphs_ivtools/README:1.1 glyphs_ivtools/README:1.2 *** glyphs_ivtools/README:1.1 Thu Jan 4 15:32:09 2001 --- src/glyphs/README Thu Nov 1 16:03:29 2001 *************** *** 13,16 **** text-editor emacs-like text editor timestamp editable time glyph ! See http://www.vectaport.com/ivtools/glyphs.html for screenshots. --- 13,16 ---- text-editor emacs-like text editor timestamp editable time glyph ! See http://www.ivtools.org/ivtools/glyphs.html for screenshots. Index: glyphs_ivtools/examples3.1/Imakefile diff -c /dev/null glyphs_ivtools/examples3.1/Imakefile:1.1 *** /dev/null Thu Nov 1 16:03:30 2001 --- src/glyphs/examples3.1/Imakefile Mon Feb 12 17:00:18 2001 *************** *** 0 **** --- 1,42 ---- + XCOMM + XCOMM examples + XCOMM + + PACKAGE = examples3.1_dir + + #if BuildRPCClasses + PLOT = plot + SENDPLOT = sendplot + #else + PLOT = + SENDPLOT = + #endif + + SUBDIRS = \ + box1 \ + box2 \ + box3 \ + box4 \ + box5 \ + button1 \ + button2 \ + button3 \ + bvalue \ + circle \ + drag \ + fonts \ + himom \ + image \ + ips \ + menu \ + patch \ + $(PLOT) \ + preview \ + print \ + rubband \ + $(SENDPLOT) \ + zoomer + + MakeInSubdirs($(SUBDIRS)) + + IvmkcmTargets($(PACKAGE)) Index: glyphs_ivtools/examples3.1/README diff -c /dev/null glyphs_ivtools/examples3.1/README:1.1 *** /dev/null Thu Nov 1 16:03:30 2001 --- src/glyphs/examples3.1/README Mon Feb 12 17:00:18 2001 *************** *** 0 **** --- 1,7 ---- + This directory contains the glyph example programs copied verbatim + from the InterViews 3.1 (3.2a) distribution (except for gl and + punidraw). All should work, except for morpher and plot/sendplot, + which need to be debugged for a modern C++ compiler and iostreams + package. Quite a few of these examples have no Quit button, so you + need to kill them with Ctrl-C or via the window-manager menu. + Index: idraw/README diff -c idraw/README:1.1 idraw/README:1.2 *** idraw/README:1.1 Thu Jan 4 15:33:02 2001 --- src/idraw/README Thu Nov 1 16:03:42 2001 *************** *** 456,459 **** colors. WEB PAGE ! http://www.vectaport.com/ivtools/idraw.html --- 456,459 ---- colors. WEB PAGE ! http://www.ivtools.org/ivtools/idraw.html Index: drawtool/README diff -c drawtool/README:1.1 drawtool/README:1.2 *** drawtool/README:1.1 Thu Jan 4 15:33:07 2001 --- src/drawtool/README Thu Nov 1 16:03:44 2001 *************** *** 72,81 **** TIFF, and the non-raster portions of arbitrary PostScript if appropriate filters are available (djpeg, giftopnm, tifftopnm, pstoedit). ! Also see "-help" for more options. SEE ALSO idraw WEB PAGE ! http://www.vectaport.com/ivtools/drawtool.html --- 72,122 ---- TIFF, and the non-raster portions of arbitrary PostScript if appropriate filters are available (djpeg, giftopnm, tifftopnm, pstoedit). ! "-color5" selects a colormap with 5 values per color or 125 entries (5 ! cubed). + "-nocolor6" overrides the selection of a colormap with 6 values per + color or 216 entries (6 cubed). + + "-gray5" selects a colormap with 5 bits of gray-level intensity (32 + gray-levels) arranged to maximize rubberband visibility. + + "-gray6" selects a colormap with 6 bits of gray-level intensity (64 + gray-levels) arranged to maximize rubberband visibility. + + "-gray7" selects a colormap with 7 bits of gray-level intensity (128 + gray-levels) arranged to maximize rubberband visibility. + + "-dithermap" causes imported JPEG rasters to be mapped to the standard + colormap (the default without -nocolor6) and dithered to avoid color + banding. + + "-opaque_off" (or "-opoff") disables the opaque (visible) + interactive transformations of graphics. + + "-pagecols" (or "-ncols") sets the horizontal page extent in pixels. + + "-pagerows" (or "-nrows") sets the vertical page extent in pixels. + + "-panner_align tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc" (or "-pal + ...") selects the alignment of the panner display. + + "-panner_off" (or "-poff") disables the panner display. + + "-slider_off" (or "-soff") disables the slider display. + + "-zoomer_off" (or "-zoff") disables the zoomer display. + + "-ptrloc" enables display of the current pointer location. + + "-scribble_pointer (or "-scrpt") enables continuous line drawing. + + "-toolbarloc r|l" (or "-tbl ...") selects the toolbar location. + + Also see "-help" and the idraw man page for more options. + SEE ALSO idraw WEB PAGE ! http://www.ivtools.org/ivtools/drawtool.html Index: comdraw/README diff -c comdraw/README:1.5 comdraw/README:1.6 *** comdraw/README:1.5 Fri Jun 15 10:57:16 2001 --- src/comdraw/README Thu Nov 1 16:03:46 2001 *************** *** 131,137 **** OPTIONS ! "-port n" specifies the port number to accept command interpreter connections on. "-import n" specifies the port number run the import service on. The --- 131,137 ---- OPTIONS ! "-comdraw n" specifies the port number to accept command interpreter connections on. "-import n" specifies the port number run the import service on. The *************** *** 142,152 **** slider, or zoomer. It can be controlled via stdin or telnet if built with ACE. SEE ALSO comterp, drawtool, idraw WEB PAGES ! http://www.vectaport.com/ivtools/comdraw.html --- 142,164 ---- slider, or zoomer. It can be controlled via stdin or telnet if built with ACE. + "-rampsize n" selects the rampsize used for gray-level image + processing. + + "-theight n" (or "-th n") selects the automatic raster tiling height. + + "-twidth n" (or "-tw n") selects the automatic raster tiling width. + + "-tile" enables the automatic raster tiling. + + Also see the -help message and the drawtool and idraw man pages for + further options. + SEE ALSO comterp, drawtool, idraw WEB PAGES ! http://www.ivtools.org/ivtools/comdraw.html Index: flipbook/README diff -c flipbook/README:1.1 flipbook/README:1.2 *** flipbook/README:1.1 Thu Jan 4 15:33:14 2001 --- src/flipbook/README Thu Nov 1 16:03:48 2001 *************** *** 59,69 **** with "sec" delay between frames (currently only available when built with ACE). ! Also see "-help" for more options. SEE ALSO drawtool, idraw WEB PAGE ! http://www.vectaport.com/ivtools/flipbook.html --- 59,70 ---- with "sec" delay between frames (currently only available when built with ACE). ! Also see "-help" for more options, and the comdraw, drawtool, and ! idraw man pages. SEE ALSO drawtool, idraw WEB PAGE ! http://www.ivtools.org/ivtools/flipbook.html Index: graphdraw/README diff -c graphdraw/README:1.1 graphdraw/README:1.2 *** graphdraw/README:1.1 Thu Jan 4 15:33:17 2001 --- src/graphdraw/README Thu Nov 1 16:03:50 2001 *************** *** 43,52 **** switching between a graph editing toolbar and a generic graphics editing toolbar. SEE ALSO ! drawtool, idraw WEB PAGE ! http://www.vectaport.com/ivtools/graphdraw.html --- 43,53 ---- switching between a graph editing toolbar and a generic graphics editing toolbar. + SEE ALSO ! -help for more options, and the comdraw, drawtool, idraw man pages WEB PAGE ! http://www.ivtools.org/ivtools/graphdraw.html Index: man1_ivtools/comdraw.1 diff -c man1_ivtools/comdraw.1:1.5 man1_ivtools/comdraw.1:1.6 *** man1_ivtools/comdraw.1:1.5 Fri Jun 15 10:57:25 2001 --- src/man/man1/comdraw.1 Thu Nov 1 16:03:58 2001 *************** *** 157,167 **** slider, or zoomer. It can be controlled via stdin or telnet if built with ACE. .SH SEE ALSO comterp, drawtool, idraw .SH WEB PAGES ! http://www.vectaport.com/ivtools/comdraw.html --- 157,184 ---- slider, or zoomer. It can be controlled via stdin or telnet if built with ACE. + .B \-rampsize n, + selects the rampsize used for gray-level image + processing. + + .B \-theight n, + (or "-th n") selects the automatic raster tiling height. + + .B \-twidth n, + (or "-tw n") selects the automatic raster tiling width. + + .B \-tile, + enables the automatic raster tiling. + + .PP + Also see the -help message and the drawtool and idraw man pages for + further options. + .SH SEE ALSO comterp, drawtool, idraw .SH WEB PAGES ! http://www.ivtools.org/ivtools/comdraw.html Index: man1_ivtools/comterp.1 diff -c man1_ivtools/comterp.1:1.10 man1_ivtools/comterp.1:1.11 *** man1_ivtools/comterp.1:1.10 Wed Oct 31 16:32:47 2001 --- src/man/man1/comterp.1 Thu Nov 1 16:03:58 2001 *************** *** 280,284 **** comdraw .SH WEB PAGES ! http://www.vectaport.com/ivtools/comterp.html --- 280,284 ---- comdraw .SH WEB PAGES ! http://www.ivtools.org/ivtools/comterp.html Index: man1_ivtools/drawtool.1 diff -c man1_ivtools/drawtool.1:1.1 man1_ivtools/drawtool.1:1.2 *** man1_ivtools/drawtool.1:1.1 Thu Jan 4 15:33:56 2001 --- src/man/man1/drawtool.1 Thu Nov 1 16:03:58 2001 *************** *** 69,79 **** or idraw documents and pbmplus image formats (PBM/PGM/PPM), plus JPEG, GIF, TIFF, and the non-raster portions of arbitrary PostScript if appropriate filters are available (djpeg, giftopnm, tifftopnm, pstoedit). .PP ! Also see "-help" for more options. .SH SEE ALSO idraw(1) .SH WEB PAGE ! http://www.vectaport.com/ivtools/drawtool.html --- 69,135 ---- or idraw documents and pbmplus image formats (PBM/PGM/PPM), plus JPEG, GIF, TIFF, and the non-raster portions of arbitrary PostScript if appropriate filters are available (djpeg, giftopnm, tifftopnm, pstoedit). + "-color5" selects a colormap with 5 values per color or 125 entries (5 + cubed). + + .PP + "-nocolor6" overrides the selection of a colormap with 6 values per + color or 216 entries (6 cubed). + + .PP + "-gray5" selects a colormap with 5 bits of gray-level intensity (32 + gray-levels) arranged to maximize rubberband visibility. + + .PP + "-gray6" selects a colormap with 6 bits of gray-level intensity (64 + gray-levels) arranged to maximize rubberband visibility. + + .PP + "-gray7" selects a colormap with 7 bits of gray-level intensity (128 + gray-levels) arranged to maximize rubberband visibility. + + .PP + "-dithermap" causes imported JPEG rasters to be mapped to the standard + colormap (the default without -nocolor6) and dithered to avoid color + banding. + + .PP + "-opaque_off" (or "-opoff") disables the opaque (visible) + interactive transformations of graphics. + + .PP + "-pagecols" (or "-ncols") sets the horizontal page extent in pixels. + + .PP + "-pagerows" (or "-nrows") sets the vertical page extent in pixels. + + .PP + "-panner_align tl|tc|tr|cl|c|cr|cl|bl|br|l|r|t|b|hc|vc" (or "-pal + ...") selects the alignment of the panner display. + + .PP + "-panner_off" (or "-poff") disables the panner display. + + .PP + "-slider_off" (or "-soff") disables the slider display. + + .PP + "-zoomer_off" (or "-zoff") disables the zoomer display. + + .PP + "-ptrloc" enables display of the current pointer location. + + .PP + "-scribble_pointer (or "-scrpt") enables continuous line drawing. + + .PP + "-toolbarloc r|l" (or "-tbl ...") selects the toolbar location. + .PP ! Also see "-help" and the idraw man page for more options. .SH SEE ALSO idraw(1) .SH WEB PAGE ! http://www.ivtools.org/ivtools/drawtool.html Index: man1_ivtools/flipbook.1 diff -c man1_ivtools/flipbook.1:1.1 man1_ivtools/flipbook.1:1.2 *** man1_ivtools/flipbook.1:1.1 Thu Jan 4 15:33:56 2001 --- src/man/man1/flipbook.1 Thu Nov 1 16:03:58 2001 *************** *** 61,71 **** with "sec" delay between frames (currently only available when built with ACE). ! Also see "-help" for more options. .SH SEE ALSO drawtool, idraw .SH WEB PAGE ! http://www.vectaport.com/ivtools/flipbook.html --- 61,72 ---- with "sec" delay between frames (currently only available when built with ACE). ! Also see "-help" for more options, and the comdraw, drawtool, and ! idraw man pages. .SH SEE ALSO drawtool, idraw .SH WEB PAGE ! http://www.ivtools.org/ivtools/flipbook.html Index: man1_ivtools/graphdraw.1 diff -c man1_ivtools/graphdraw.1:1.1 man1_ivtools/graphdraw.1:1.2 *** man1_ivtools/graphdraw.1:1.1 Thu Jan 4 15:33:56 2001 --- src/man/man1/graphdraw.1 Thu Nov 1 16:03:58 2001 *************** *** 45,48 **** drawtool, idraw .SH WEB PAGE ! http://www.vectaport.com/ivtools/graphdraw.html --- 45,48 ---- drawtool, idraw .SH WEB PAGE ! http://www.ivtools.org/ivtools/graphdraw.html Index: html_ivtools/README diff -c html_ivtools/README:1.1 html_ivtools/README:1.2 *** html_ivtools/README:1.1 Thu Jan 4 15:34:01 2001 --- src/html/README Thu Nov 1 16:03:59 2001 *************** *** 43,49 **** or from here: ! http://www.vectaport.com/pub/src/perceps341.tgz 2.2 Verify your version of Perl is >= 5.003 with: --- 43,49 ---- or from here: ! http://www.ivtools.org/pub/src/perceps341.tgz 2.2 Verify your version of Perl is >= 5.003 with: Index: html_ivtools/getman31.sh diff -c html_ivtools/getman31.sh:1.1 html_ivtools/getman31.sh:1.2 *** html_ivtools/getman31.sh:1.1 Thu Jan 4 15:34:01 2001 --- src/html/getman31.sh Thu Nov 1 16:03:59 2001 *************** *** 1,149 **** mkdir man3.1 ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Adjuster.html man3.1/Adjuster.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Banner.html man3.1/Banner.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/BasicDialog.html man3.1/BasicDialog.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Border.html man3.1/Border.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Box2_6.html man3.1/Box2_6.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/BrushCmd.html man3.1/BrushCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Button2_6.html man3.1/Button2_6.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/CGlue.html man3.1/CGlue.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/CSolver.html man3.1/CSolver.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Catalog.html man3.1/Catalog.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Clipboard.html man3.1/Clipboard.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ColorCmd.html man3.1/ColorCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Command.html man3.1/Command.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/CompletionEditor.html man3.1/CompletionEditor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Component.html man3.1/Component.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ComponentView.html man3.1/ComponentView.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ConnectTool.html man3.1/ConnectTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Connector.html man3.1/Connector.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Control.html man3.1/Control.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ControlInfo.html man3.1/ControlInfo.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Creator.html man3.1/Creator.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Damage.html man3.1/Damage.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Data.html man3.1/Data.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Deck2_6.html man3.1/Deck2_6.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Dialog.html man3.1/Dialog.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Dispatcher.html man3.1/Dispatcher.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Editor.html man3.1/Editor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/EditorInfo.html man3.1/EditorInfo.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/EllipseComp.html man3.1/EllipseComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ExternView.html man3.1/ExternView.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/FileBrowser.html man3.1/FileBrowser.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/FileChooser.html man3.1/FileChooser.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/FontCmd.html man3.1/FontCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Frame.html man3.1/Frame.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/GVUpdater.html man3.1/GVUpdater.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Glue2_6.html man3.1/Glue2_6.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Graphic.html man3.1/Graphic.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/GraphicBlock.html man3.1/GraphicBlock.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/GraphicComp.html man3.1/GraphicComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/GraphicCompTool.html man3.1/GraphicCompTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/GraphicView.html man3.1/GraphicView.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Grid.html man3.1/Grid.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/IOCallback.html man3.1/IOCallback.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/IOHandler.html man3.1/IOHandler.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ImportCmd.html man3.1/ImportCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Interactor.html man3.1/Interactor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Iterator.html man3.1/Iterator.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/KeyMap.html man3.1/KeyMap.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/LineComp.html man3.1/LineComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/LinkComp.html man3.1/LinkComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/MacroCmd.html man3.1/MacroCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/MagnifyTool.html man3.1/MagnifyTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Manipulator.html man3.1/Manipulator.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/MatchEditor.html man3.1/MatchEditor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Menu2_6.html man3.1/Menu2_6.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Message.html man3.1/Message.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/MoveTool.html man3.1/MoveTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/NOPCmd.html man3.1/NOPCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/PadComp.html man3.1/PadComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Page.html man3.1/Page.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Painter.html man3.1/Painter.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Panner.html man3.1/Panner.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Path.html man3.1/Path.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Pattern.html man3.1/Pattern.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/PatternCmd.html man3.1/PatternCmd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Perspective.html man3.1/Perspective.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Picture.html man3.1/Picture.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/PinComp.html man3.1/PinComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/PolygonComp.html man3.1/PolygonComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/PostScriptView.html man3.1/PostScriptView.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RasterComp.html man3.1/RasterComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RasterRect.html man3.1/RasterRect.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RectComp.html man3.1/RectComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Regexp.html man3.1/Regexp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ReqErr.html man3.1/ReqErr.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ReshapeTool.html man3.1/ReshapeTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Resource.html man3.1/Resource.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RotateTool.html man3.1/RotateTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcHdr.html man3.1/RpcHdr.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcPeer.html man3.1/RpcPeer.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcReader.html man3.1/RpcReader.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcRegistry.html man3.1/RpcRegistry.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcService.html man3.1/RpcService.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/RpcWriter.html man3.1/RpcWriter.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Rubband.html man3.1/Rubband.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ScaleTool.html man3.1/ScaleTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Scene.html man3.1/Scene.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Scroller.html man3.1/Scroller.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/SelectTool.html man3.1/SelectTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Selection.html man3.1/Selection.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Sensor.html man3.1/Sensor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Shape.html man3.1/Shape.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/SlotComp.html man3.1/SlotComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/SplineComp.html man3.1/SplineComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StateVar.html man3.1/StateVar.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StateVarView.html man3.1/StateVarView.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StencilComp.html man3.1/StencilComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StrBrowser.html man3.1/StrBrowser.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StrChooser.html man3.1/StrChooser.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StretchTool.html man3.1/StretchTool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/StringEditor.html man3.1/StringEditor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Subject.html man3.1/Subject.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/TextBuffer.html man3.1/TextBuffer.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/TextComp.html man3.1/TextComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/TextDisplay.html man3.1/TextDisplay.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/TextEditor.html man3.1/TextEditor.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Tool.html man3.1/Tool.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/TransferFunct.html man3.1/TransferFunct.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Tray.html man3.1/Tray.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UArray.html man3.1/UArray.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UControl.html man3.1/UControl.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UHashTable.html man3.1/UHashTable.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ULabel.html man3.1/ULabel.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UList.html man3.1/UList.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UMap.html man3.1/UMap.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UStencil.html man3.1/UStencil.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Unidraw.html man3.1/Unidraw.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/UnidrawIntro.html man3.1/UnidrawIntro.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Vertices.html man3.1/Vertices.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/VerticesComp.html man3.1/VerticesComp.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Viewer.html man3.1/Viewer.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/Viewport.html man3.1/Viewport.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/World.html man3.1/World.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/align.html man3.1/align.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/catcmds.html man3.1/catcmds.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/classes.html man3.1/classes.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/datas.html man3.1/datas.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/edit.html man3.1/edit.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/ellipses.html man3.1/ellipses.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/geomobjs.html man3.1/geomobjs.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/globals.html man3.1/globals.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/index.html man3.1/index.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/iostreamb.html man3.1/iostreamb.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/kybd.html man3.1/kybd.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/lines.html man3.1/lines.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/manips.html man3.1/manips.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/polygons.html man3.1/polygons.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/pspaint.html man3.1/pspaint.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/rpcbuf.html man3.1/rpcbuf.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/rpcstream.html man3.1/rpcstream.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/splines.html man3.1/splines.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/statevars.html man3.1/statevars.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/stateviews.html man3.1/stateviews.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/struct.html man3.1/struct.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/transfns.html man3.1/transfns.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/transforms.html man3.1/transforms.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/uctrls.html man3.1/uctrls.html ! ivdl http://www.vectaport.com/ivtools/doc/man3.1/viewcmds.html man3.1/viewcmds.html --- 1,149 ---- mkdir man3.1 ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Adjuster.html man3.1/Adjuster.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Banner.html man3.1/Banner.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/BasicDialog.html man3.1/BasicDialog.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Border.html man3.1/Border.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Box2_6.html man3.1/Box2_6.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/BrushCmd.html man3.1/BrushCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Button2_6.html man3.1/Button2_6.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/CGlue.html man3.1/CGlue.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/CSolver.html man3.1/CSolver.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Catalog.html man3.1/Catalog.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Clipboard.html man3.1/Clipboard.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ColorCmd.html man3.1/ColorCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Command.html man3.1/Command.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/CompletionEditor.html man3.1/CompletionEditor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Component.html man3.1/Component.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ComponentView.html man3.1/ComponentView.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ConnectTool.html man3.1/ConnectTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Connector.html man3.1/Connector.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Control.html man3.1/Control.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ControlInfo.html man3.1/ControlInfo.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Creator.html man3.1/Creator.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Damage.html man3.1/Damage.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Data.html man3.1/Data.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Deck2_6.html man3.1/Deck2_6.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Dialog.html man3.1/Dialog.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Dispatcher.html man3.1/Dispatcher.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Editor.html man3.1/Editor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/EditorInfo.html man3.1/EditorInfo.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/EllipseComp.html man3.1/EllipseComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ExternView.html man3.1/ExternView.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/FileBrowser.html man3.1/FileBrowser.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/FileChooser.html man3.1/FileChooser.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/FontCmd.html man3.1/FontCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Frame.html man3.1/Frame.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/GVUpdater.html man3.1/GVUpdater.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Glue2_6.html man3.1/Glue2_6.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Graphic.html man3.1/Graphic.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/GraphicBlock.html man3.1/GraphicBlock.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/GraphicComp.html man3.1/GraphicComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/GraphicCompTool.html man3.1/GraphicCompTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/GraphicView.html man3.1/GraphicView.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Grid.html man3.1/Grid.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/IOCallback.html man3.1/IOCallback.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/IOHandler.html man3.1/IOHandler.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ImportCmd.html man3.1/ImportCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Interactor.html man3.1/Interactor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Iterator.html man3.1/Iterator.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/KeyMap.html man3.1/KeyMap.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/LineComp.html man3.1/LineComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/LinkComp.html man3.1/LinkComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/MacroCmd.html man3.1/MacroCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/MagnifyTool.html man3.1/MagnifyTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Manipulator.html man3.1/Manipulator.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/MatchEditor.html man3.1/MatchEditor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Menu2_6.html man3.1/Menu2_6.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Message.html man3.1/Message.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/MoveTool.html man3.1/MoveTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/NOPCmd.html man3.1/NOPCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/PadComp.html man3.1/PadComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Page.html man3.1/Page.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Painter.html man3.1/Painter.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Panner.html man3.1/Panner.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Path.html man3.1/Path.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Pattern.html man3.1/Pattern.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/PatternCmd.html man3.1/PatternCmd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Perspective.html man3.1/Perspective.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Picture.html man3.1/Picture.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/PinComp.html man3.1/PinComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/PolygonComp.html man3.1/PolygonComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/PostScriptView.html man3.1/PostScriptView.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RasterComp.html man3.1/RasterComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RasterRect.html man3.1/RasterRect.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RectComp.html man3.1/RectComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Regexp.html man3.1/Regexp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ReqErr.html man3.1/ReqErr.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ReshapeTool.html man3.1/ReshapeTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Resource.html man3.1/Resource.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RotateTool.html man3.1/RotateTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcHdr.html man3.1/RpcHdr.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcPeer.html man3.1/RpcPeer.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcReader.html man3.1/RpcReader.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcRegistry.html man3.1/RpcRegistry.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcService.html man3.1/RpcService.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/RpcWriter.html man3.1/RpcWriter.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Rubband.html man3.1/Rubband.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ScaleTool.html man3.1/ScaleTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Scene.html man3.1/Scene.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Scroller.html man3.1/Scroller.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/SelectTool.html man3.1/SelectTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Selection.html man3.1/Selection.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Sensor.html man3.1/Sensor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Shape.html man3.1/Shape.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/SlotComp.html man3.1/SlotComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/SplineComp.html man3.1/SplineComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StateVar.html man3.1/StateVar.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StateVarView.html man3.1/StateVarView.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StencilComp.html man3.1/StencilComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StrBrowser.html man3.1/StrBrowser.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StrChooser.html man3.1/StrChooser.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StretchTool.html man3.1/StretchTool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/StringEditor.html man3.1/StringEditor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Subject.html man3.1/Subject.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/TextBuffer.html man3.1/TextBuffer.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/TextComp.html man3.1/TextComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/TextDisplay.html man3.1/TextDisplay.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/TextEditor.html man3.1/TextEditor.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Tool.html man3.1/Tool.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/TransferFunct.html man3.1/TransferFunct.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Tray.html man3.1/Tray.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UArray.html man3.1/UArray.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UControl.html man3.1/UControl.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UHashTable.html man3.1/UHashTable.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ULabel.html man3.1/ULabel.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UList.html man3.1/UList.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UMap.html man3.1/UMap.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UStencil.html man3.1/UStencil.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Unidraw.html man3.1/Unidraw.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/UnidrawIntro.html man3.1/UnidrawIntro.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Vertices.html man3.1/Vertices.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/VerticesComp.html man3.1/VerticesComp.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Viewer.html man3.1/Viewer.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/Viewport.html man3.1/Viewport.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/World.html man3.1/World.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/align.html man3.1/align.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/catcmds.html man3.1/catcmds.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/classes.html man3.1/classes.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/datas.html man3.1/datas.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/edit.html man3.1/edit.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/ellipses.html man3.1/ellipses.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/geomobjs.html man3.1/geomobjs.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/globals.html man3.1/globals.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/index.html man3.1/index.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/iostreamb.html man3.1/iostreamb.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/kybd.html man3.1/kybd.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/lines.html man3.1/lines.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/manips.html man3.1/manips.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/polygons.html man3.1/polygons.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/pspaint.html man3.1/pspaint.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/rpcbuf.html man3.1/rpcbuf.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/rpcstream.html man3.1/rpcstream.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/splines.html man3.1/splines.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/statevars.html man3.1/statevars.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/stateviews.html man3.1/stateviews.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/struct.html man3.1/struct.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/transfns.html man3.1/transfns.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/transforms.html man3.1/transforms.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/uctrls.html man3.1/uctrls.html ! ivdl http://www.ivtools.org/ivtools/doc/man3.1/viewcmds.html man3.1/viewcmds.html Index: html_ivtools/getrefman31.sh diff -c html_ivtools/getrefman31.sh:1.1 html_ivtools/getrefman31.sh:1.2 *** html_ivtools/getrefman31.sh:1.1 Thu Jan 4 15:34:01 2001 --- src/html/getrefman31.sh Thu Nov 1 16:04:00 2001 *************** *** 1,5 **** mkdir refman3.1 ! ivdl http://www.vectaport.com/ivtools/doc/refman3.1/error.html refman3.1/error.html ! ivdl http://www.vectaport.com//ivtools/doc/refman3.1/index.html refman3.1/index.html ! ivdl http://www.vectaport.com//ivtools/doc/refman3.1/left.html refman3.1/left.html ! ivdl http://www.vectaport.com//ivtools/doc/refman3.1/refman.html refman3.1/refman.html --- 1,5 ---- mkdir refman3.1 ! ivdl http://www.ivtools.org/ivtools/doc/refman3.1/error.html refman3.1/error.html ! ivdl http://www.ivtools.org/ivtools/doc/refman3.1/index.html refman3.1/index.html ! ivdl http://www.ivtools.org/ivtools/doc/refman3.1/left.html refman3.1/left.html ! ivdl http://www.ivtools.org/ivtools/doc/refman3.1/refman.html refman3.1/refman.html *** /dev/null Thu Nov 1 16:04:03 PST 2001 --- patches/ivtools-011101-johnston-081 *************** patches/ivtools-011101-johnston-081 *** 0 **** --- 1 ---- + ivtools-011101-johnston-081 |
|
From: <ivt...@li...> - 2001-11-01 00:41:18
|
Patch: ivtools-011031-johnston-080
For: ivtools-0.9.7
Author: joh...@us...
Subject: $ stream operator, each command, AttributeValueList deep copy constructor,
Requires:
This is an intermediate patch to ivtools-0.9.7. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- $ unary-prefix operator as a short-cut for stream command. Useful
when copying the same stream many times in one command.
- each operator traverses a stream, exercising it until the end, and
returns the length count.
- make the AttributeValueList constructor that takes an
AttributeValueList* a truly deep copy.
Index: ComUtil/optable.c
diff -c ComUtil/optable.c:1.5 ComUtil/optable.c:1.6
*** ComUtil/optable.c:1.5 Mon Oct 8 13:05:04 2001
--- src/ComUtil/optable.c Wed Oct 31 16:32:11 2001
***************
*** 81,86 ****
--- 81,87 ----
} DefaultOperatorTable[] = {
{".", "dot", 130, FALSE, OPTYPE_BINARY },
{"`", "bquote", 125, TRUE, OPTYPE_UNARY_PREFIX },
+ {"$", "stream", 125, TRUE, OPTYPE_UNARY_PREFIX },
{"!", "negate", 110, TRUE, OPTYPE_UNARY_PREFIX },
{"~", "bit_not", 110, TRUE, OPTYPE_UNARY_PREFIX },
{"++", "incr", 110, TRUE, OPTYPE_UNARY_PREFIX },
***************
*** 903,908 ****
--- 904,910 ----
-------- ------- -------- ---- ----
. dot 130 N BINARY
` bquote 125 Y UNARY PREFIX
+ $ stream 125 Y UNARY PREFIX
! negate 110 Y UNARY PREFIX
~ bit_not 110 Y UNARY PREFIX
++ incr 110 Y UNARY PREFIX
Index: Attribute/attrlist.c
diff -c Attribute/attrlist.c:1.3 Attribute/attrlist.c:1.4
*** Attribute/attrlist.c:1.3 Thu Oct 11 15:20:27 2001
--- src/Attribute/attrlist.c Wed Oct 31 16:32:13 2001
***************
*** 304,310 ****
ALIterator i;
for (s->First(i); !s->Done(i); s->Next(i)) {
! Append(new AttributeValue(*s->GetAttrVal(i)));
}
}
}
--- 304,310 ----
ALIterator i;
for (s->First(i); !s->Done(i); s->Next(i)) {
! Append(new AttributeValue(s->GetAttrVal(i)));
}
}
}
Index: Attribute/attrvalue.c
diff -c Attribute/attrvalue.c:1.10 Attribute/attrvalue.c:1.11
*** Attribute/attrvalue.c:1.10 Fri Oct 19 09:27:24 2001
--- src/Attribute/attrvalue.c Wed Oct 31 16:32:13 2001
***************
*** 52,58 ****
AttributeValue::AttributeValue(AttributeValue& sv) {
*this = sv;
! ref_as_needed();
}
AttributeValue::AttributeValue() {
--- 52,62 ----
AttributeValue::AttributeValue(AttributeValue& sv) {
*this = sv;
! }
!
! AttributeValue::AttributeValue(AttributeValue* sv) {
! *this = *sv;
! dup_as_needed();
}
AttributeValue::AttributeValue() {
***************
*** 987,992 ****
--- 991,1010 ----
Resource::ref(_v.arrayval.ptr);
else if (_type == AttributeValue::StreamType)
Resource::ref(_v.streamval.listptr);
+ }
+
+ void AttributeValue::dup_as_needed() {
+ if (_type == AttributeValue::ArrayType) {
+ AttributeValueList* avl = _v.arrayval.ptr;
+ _v.arrayval.ptr = new AttributeValueList(avl);
+ Resource::ref(_v.arrayval.ptr);
+ Resource::unref(avl);
+ } else if (_type == AttributeValue::StreamType) {
+ AttributeValueList* avl = _v.streamval.listptr;
+ _v.streamval.listptr = new AttributeValueList(avl);
+ Resource::ref(_v.streamval.listptr);
+ Resource::unref(avl);
+ }
}
void AttributeValue::unref_as_needed() {
Index: Attribute/attrvalue.h
diff -c Attribute/attrvalue.h:1.6 Attribute/attrvalue.h:1.7
*** Attribute/attrvalue.h:1.6 Thu Oct 11 15:20:27 2001
--- src/Attribute/attrvalue.h Wed Oct 31 16:32:13 2001
***************
*** 115,120 ****
--- 115,122 ----
// construct with specified type and value struct.
AttributeValue(AttributeValue&);
// copy constructor.
+ AttributeValue(AttributeValue*);
+ // deep copy constructor.
AttributeValue();
// default constructor (UnknownType constructor).
***************
*** 359,364 ****
--- 361,368 ----
// increment ref counters as needed
void unref_as_needed();
// decrement ref counters as needed
+ void dup_as_needed();
+ // duplicate lists then increment ref counters as needed
ValueType _type;
attr_value _v;
Index: ComTerp/comterp.c
diff -c ComTerp/comterp.c:1.15 ComTerp/comterp.c:1.16
*** ComTerp/comterp.c:1.15 Fri Oct 19 16:33:56 2001
--- src/ComTerp/comterp.c Wed Oct 31 16:32:16 2001
***************
*** 970,975 ****
--- 970,976 ----
add_command("repeat", new RepeatFunc(this));
add_command("iterate", new IterateFunc(this));
add_command("next", new NextFunc(this));
+ add_command("each", new EachFunc(this));
add_command("dot", new DotFunc(this));
add_command("attrname", new DotNameFunc(this));
Index: ComTerp/comvalue.c
diff -c ComTerp/comvalue.c:1.8 ComTerp/comvalue.c:1.9
*** ComTerp/comvalue.c:1.8 Fri Oct 19 09:27:26 2001
--- src/ComTerp/comvalue.c Wed Oct 31 16:32:16 2001
***************
*** 51,62 ****
ComValue::ComValue(ComValue& sv) {
*this = sv;
! ref_as_needed();
}
ComValue::ComValue(AttributeValue& sv) {
*(AttributeValue*)this = sv;
- ref_as_needed();
zero_vals();
}
--- 51,65 ----
ComValue::ComValue(ComValue& sv) {
*this = sv;
! }
!
! ComValue::ComValue(ComValue* sv) {
! *this = *sv;
! dup_as_needed();
}
ComValue::ComValue(AttributeValue& sv) {
*(AttributeValue*)this = sv;
zero_vals();
}
***************
*** 127,132 ****
--- 130,136 ----
_nids = sv._nids;
_pedepth = sv._pedepth;
_bquote = sv._bquote;
+ ref_as_needed();
return *this;
}
Index: ComTerp/comvalue.h
diff -c ComTerp/comvalue.h:1.3 ComTerp/comvalue.h:1.4
*** ComTerp/comvalue.h:1.3 Fri Sep 28 16:00:09 2001
--- src/ComTerp/comvalue.h Wed Oct 31 16:32:16 2001
***************
*** 45,50 ****
--- 45,52 ----
public:
ComValue(ComValue&);
// copy constructor.
+ ComValue(ComValue*);
+ // deep copy constructor.
ComValue(AttributeValue&);
// copy constructor from an AttributeValue.
ComValue(postfix_token* token);
Index: ComTerp/helpfunc.c
diff -c ComTerp/helpfunc.c:1.8 ComTerp/helpfunc.c:1.9
*** ComTerp/helpfunc.c:1.8 Fri Oct 19 09:27:26 2001
--- src/ComTerp/helpfunc.c Wed Oct 31 16:32:16 2001
***************
*** 181,187 ****
printed = true;
}
}
! if (!printed && command_ids[i]>=0 && comfuncs[i]) {
/* if symid is smaller than the highest operator it must be one */
if (command_ids[i]>=0 && command_ids[i]<=opr_tbl_topstr()) {
int op_ids[OPTYPE_NUM];
--- 181,187 ----
printed = true;
}
}
! if (!printed && command_ids[i]>=0) {
/* if symid is smaller than the highest operator it must be one */
if (command_ids[i]>=0 && command_ids[i]<=opr_tbl_topstr()) {
int op_ids[OPTYPE_NUM];
Index: ComTerp/iofunc.c
diff -c ComTerp/iofunc.c:1.5 ComTerp/iofunc.c:1.6
*** ComTerp/iofunc.c:1.5 Fri Oct 12 14:56:21 2001
--- src/ComTerp/iofunc.c Wed Oct 31 16:32:16 2001
***************
*** 58,63 ****
--- 58,64 ----
reset_stack();
const char* fstr = formatstr.is_string() ? formatstr.string_ptr() : "nil";
+ ComValue::comterp(comterp());
#if __GNUG__<3
streambuf* strmbuf = nil;
***************
*** 89,95 ****
#endif
ostream out(strmbuf);
! if (nargs()==1) {
if (formatstr.is_string())
out << formatstr.symbol_ptr();
--- 90,97 ----
#endif
ostream out(strmbuf);
! int narg = nargs();
! if (narg==1) {
if (formatstr.is_string())
out << formatstr.symbol_ptr();
Index: ComTerp/strmfunc.c
diff -c ComTerp/strmfunc.c:1.10 ComTerp/strmfunc.c:1.11
*** ComTerp/strmfunc.c:1.10 Fri Oct 19 16:33:56 2001
--- src/ComTerp/strmfunc.c Wed Oct 31 16:32:16 2001
***************
*** 422,424 ****
--- 422,454 ----
}
+ /*****************************************************************************/
+
+ EachFunc::EachFunc(ComTerp* comterp) : ComFunc(comterp) {
+ }
+
+ void EachFunc::execute() {
+ ComValue strmv(stack_arg_post_eval(0));
+ reset_stack();
+
+ if (strmv.is_stream()) {
+
+ int cnt = 0;
+ /* traverse stream */
+ boolean done = false;
+ while (!done) {
+ NextFunc::execute_impl(comterp(), strmv);
+ if (comterp()->pop_stack().is_unknown())
+ done = true;
+ else
+ cnt++;
+ }
+
+ ComValue retval(cnt, ComValue::IntType);
+ push_stack(retval);
+
+ } else
+ push_stack(ComValue::nullval());
+
+ }
+
Index: ComTerp/strmfunc.h
diff -c ComTerp/strmfunc.h:1.7 ComTerp/strmfunc.h:1.8
*** ComTerp/strmfunc.h:1.7 Fri Oct 19 09:27:26 2001
--- src/ComTerp/strmfunc.h Wed Oct 31 16:32:16 2001
***************
*** 130,133 ****
--- 130,145 ----
};
+ //: traverse stream command for ComTerp.
+ // cnt=each(strm) -- traverse list returning its length
+ class EachFunc : public ComFunc {
+ public:
+ EachFunc(ComTerp*);
+
+ virtual void execute();
+ virtual boolean post_eval() { return true; }
+ virtual const char* docstring() {
+ return "cnt=%s(strm) -- traverse list returning its length"; }
+ };
+
#endif /* !defined(_strmfunc_h) */
Index: comterp/README
diff -c comterp/README:1.9 comterp/README:1.10
*** comterp/README:1.9 Fri Oct 19 09:27:28 2001
--- src/comterp_/README Wed Oct 31 16:32:18 2001
***************
*** 76,81 ****
--- 76,82 ----
--------- ------------ -------- ----- ----
. dot 130 L-to-R binary
` bquote 125 R-to-L unary-prefix
+ $ stream 125 R-to-L unary-prefix
! negate 110 R-to-L unary-prefix
~ bit_not 110 R-to-L unary-prefix
++ incr 110 R-to-L unary-prefix
***************
*** 185,190 ****
--- 186,193 ----
val=next(strm) -- return next value from stream
strm=stream(ostrm|list) -- copy stream or convert list
+
+ cnt=each(strm) -- traverse the stream returning its length
CONTROL COMMANDS (using post evaluation):
Index: Time/Time.c
diff -c Time/Time.c:1.2 Time/Time.c:1.3
*** Time/Time.c:1.2 Fri Oct 19 09:27:33 2001
--- src/Time/Time.c Wed Oct 31 16:32:23 2001
***************
*** 62,68 ****
int gettimeofday(struct timeval *tp, struct timezone *tzp);
}
#endif
!
#endif
static long TIME_ZONE; /* seconds west of GMT */
--- 62,70 ----
int gettimeofday(struct timeval *tp, struct timezone *tzp);
}
#endif
! #if defined(__NetBSD__)
! #include </usr/include/sys/time.h>
! #endif
#endif
static long TIME_ZONE; /* seconds west of GMT */
Index: man1_ivtools/comterp.1
diff -c man1_ivtools/comterp.1:1.9 man1_ivtools/comterp.1:1.10
*** man1_ivtools/comterp.1:1.9 Fri Oct 19 09:27:54 2001
--- src/man/man1/comterp.1 Wed Oct 31 16:32:47 2001
***************
*** 86,91 ****
--- 86,92 ----
--------- ------------ -------- ----- ----
. dot 130 R-to-L binary
` bquote 125 R-to-L unary-prefix
+ $ stream 125 R-to-L unary-prefix
! negate 110 R-to-L unary-prefix
~ bit_not 110 R-to-L unary-prefix
++ incr 110 R-to-L unary-prefix
***************
*** 195,200 ****
--- 196,203 ----
val=next(stream) -- return next value from stream
strm=stream(ostrm|list) -- copy stream or convert list
+
+ cnt=each(strm) -- traverse the stream returning its length
.SH CONTROL COMMANDS (using post evaluation):
*** /dev/null Wed Oct 31 16:32:51 PST 2001
--- patches/ivtools-011031-johnston-080
*************** patches/ivtools-011031-johnston-080
*** 0 ****
--- 1 ----
+ ivtools-011031-johnston-080
|
|
From: <ivt...@li...> - 2001-10-19 23:36:27
|
Patch: ivtools-011019-johnston-079
For: ivtools-0.9.7
Author: joh...@us...
Subject: streaming fixes
Requires:
This is an intermediate patch to ivtools-0.9.7. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- streaming fixes, mostly along the lines of working out nil
termination in different circumstances.
Index: ComTerp/comterp.c
diff -c ComTerp/comterp.c:1.14 ComTerp/comterp.c:1.15
*** ComTerp/comterp.c:1.14 Mon Oct 15 13:14:00 2001
--- src/ComTerp/comterp.c Fri Oct 19 16:33:56 2001
***************
*** 724,730 ****
else
return stacktop;
} else
! return ComValue::nullval();
}
ComValue& ComTerp::lookup_symval(ComValue& comval) {
--- 724,730 ----
else
return stacktop;
} else
! return ComValue::blankval();
}
ComValue& ComTerp::lookup_symval(ComValue& comval) {
***************
*** 797,803 ****
ComValue& ComTerp::stack_top(int n) {
if (_stack_top+n < 0 || _stack_top+n >= _stack_siz) {
! return ComValue::unkval();
}
else
return _stack[_stack_top+n];
--- 797,803 ----
ComValue& ComTerp::stack_top(int n) {
if (_stack_top+n < 0 || _stack_top+n >= _stack_siz) {
! return ComValue::blankval();
}
else
return _stack[_stack_top+n];
Index: ComTerp/strmfunc.c
diff -c ComTerp/strmfunc.c:1.9 ComTerp/strmfunc.c:1.10
*** ComTerp/strmfunc.c:1.9 Fri Oct 19 09:27:26 2001
--- src/ComTerp/strmfunc.c Fri Oct 19 16:33:56 2001
***************
*** 71,77 ****
if (operand1.is_array()) {
AttributeValueList* avl = new AttributeValueList(operand1.array_val());
! ComValue stream(this, avl);
stream.stream_mode(-1); // for internal use (use by this func)
push_stack(stream);
} else if (operand1.is_attributelist()) {
--- 71,77 ----
if (operand1.is_array()) {
AttributeValueList* avl = new AttributeValueList(operand1.array_val());
! ComValue stream(snfunc, avl);
stream.stream_mode(-1); // for internal use (use by this func)
push_stack(stream);
} else if (operand1.is_attributelist()) {
***************
*** 100,106 ****
}
void StreamNextFunc::execute() {
! ComValue operand1(stack_arg_post_eval(0));
reset_stack();
--- 100,106 ----
}
void StreamNextFunc::execute() {
! ComValue operand1(stack_arg(0));
reset_stack();
***************
*** 380,401 ****
/* internal use */
comterp->push_stack(*val);
((ComFunc*)val->stream_func())->exec(1,0);
! if (comterp->stack_top().is_null()) {
!
! /* sub-stream return null, zero it, and return null for this one */
! val->stream_list()->clear();
! comterp->push_stack(ComValue::nullval());
! streamv.stream_list()->clear();
! return;
! }
- } else {
-
/* external use */
ComValue cval(*val);
NextFunc::execute_impl(comterp, cval);
}
narg++;
} else {
--- 380,402 ----
/* internal use */
comterp->push_stack(*val);
((ComFunc*)val->stream_func())->exec(1,0);
! }else {
/* external use */
ComValue cval(*val);
NextFunc::execute_impl(comterp, cval);
}
+
+ if (comterp->stack_top().is_null()) {
+
+ /* sub-stream return null, zero it, and return null for this one */
+ val->stream_list()->clear();
+ comterp->push_stack(ComValue::nullval());
+ streamv.stream_list()->clear();
+ return;
+ }
+
narg++;
} else {
*** /dev/null Fri Oct 19 16:34:10 PDT 2001
--- patches/ivtools-011019-johnston-079
*************** patches/ivtools-011019-johnston-079
*** 0 ****
--- 1 ----
+ ivtools-011019-johnston-079
|
|
From: <ivt...@li...> - 2001-10-19 16:37:27
|
Patch: ivtools-011019-johnston-078
For: ivtools-0.9.7
Author: joh...@us...
Subject:
Requires:
This is an intermediate patch to ivtools-0.9.7. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- revise MANIFEST.comterp to reflect current state of comterp.
- fix comterp memcpy problem on 64 bit Alpha
- fix gcc-3.0.* build without ACE
- fix compilation of Time/Time.c on NETBSD.
- add :posteval flag to comterp help command in order to see which
commands are control constructs (post-evaluated, i.e. there arguments
are passed to them in an unevaluated state. The result is:
cond,for,help,if,list,next,posteval,postfix,stream,while
There are some post-evaluated operators as well. I'll get those next
time.
- restore symid and symadd to be normal, non post-evaluated commands.
Didn't seem to be necessary, and making this change makes them
available for streaming.
- make confirmbox command return nil if Cancel is pressed.
Index: top_ivtools/MANIFEST.comterp
diff -c top_ivtools/MANIFEST.comterp:1.4 top_ivtools/MANIFEST.comterp:1.5
*** top_ivtools/MANIFEST.comterp:1.4 Thu Aug 16 13:16:57 2001
--- ./MANIFEST.comterp Fri Oct 19 09:27:22 2001
***************
*** 1,7 ****
Imakefile
MANIFEST.comterp
Makefile
- README.comterp
config/Imakefile
config/InterViews/Imakefile
config/InterViews/TIFF.def
--- 1,6 ----
***************
*** 16,21 ****
--- 15,22 ----
config/InterViews/iv-bsd.cf
config/InterViews/iv-convex.cf
config/InterViews/iv-cray.cf
+ config/InterViews/iv-cygwin.cf
+ config/InterViews/iv-freebsd.cf
config/InterViews/iv-generic.cf
config/InterViews/iv-hp.cf
config/InterViews/iv-ibm.cf
***************
*** 42,49 ****
--- 43,52 ----
config/alpha4-gcc.mk
config/arch.def
config/config.defs.in
+ config/config.mk
config/config.null.mk
config/default-gcc.mk
+ config/freebsd-gcc.mk
config/freebsd2.1-gcc.mk
config/gcc.def
config/hpux-gcc.mk
***************
*** 60,65 ****
--- 63,70 ----
config/rules.def
config/sco3.2.4-gcc.mk
config/site.def.ALPHA
+ config/site.def.CYGWIN
+ config/site.def.FREEBSD
config/site.def.HP800
config/site.def.LINUX
config/site.def.NETBSD
***************
*** 84,89 ****
--- 89,95 ----
src/Attribute/attrlist.h
src/Attribute/attrvalue.c
src/Attribute/attrvalue.h
+ src/Attribute/classid.h
src/Attribute/commodule.c
src/Attribute/commodule.h
src/Attribute/lexscan.c
***************
*** 99,104 ****
--- 105,112 ----
src/ComTerp/bitfunc.h
src/ComTerp/boolfunc.c
src/ComTerp/boolfunc.h
+ src/ComTerp/bquotefunc.c
+ src/ComTerp/bquotefunc.h
src/ComTerp/comfunc.c
src/ComTerp/comfunc.h
src/ComTerp/comhandler.c
***************
*** 114,119 ****
--- 122,131 ----
src/ComTerp/condfunc.h
src/ComTerp/ctrlfunc.c
src/ComTerp/ctrlfunc.h
+ src/ComTerp/debugfunc.c
+ src/ComTerp/debugfunc.h
+ src/ComTerp/dotfunc.c
+ src/ComTerp/dotfunc.h
src/ComTerp/helpfunc.c
src/ComTerp/helpfunc.h
src/ComTerp/iofunc.c
***************
*** 137,142 ****
--- 149,158 ----
src/ComTerp/statfunc.h
src/ComTerp/strmfunc.c
src/ComTerp/strmfunc.h
+ src/ComTerp/symbolfunc.c
+ src/ComTerp/symbolfunc.h
+ src/ComTerp/typefunc.c
+ src/ComTerp/typefunc.h
src/ComTerp/xformfunc.c
src/ComTerp/xformfunc.h
src/ComUtil/Imakefile
***************
*** 189,197 ****
--- 205,218 ----
src/TopoFace/toponode.c
src/TopoFace/toponode.h
src/Unidraw-common/Imakefile
+ src/Unidraw-common/component.c
+ src/Unidraw-common/compview.c
src/Unidraw-common/geomobjs.c
src/Unidraw-common/iterator.c
+ src/Unidraw-common/uarray.c
+ src/Unidraw-common/uhash.c
src/Unidraw-common/ulist.c
+ src/Unidraw-common/umap.c
src/comterp_/Imakefile
src/comterp_/README
src/comterp_/main.c
***************
*** 236,252 ****
--- 257,284 ----
src/include/OS/string.h
src/include/OS/table.h
src/include/OS/types.h
+ src/include/Unidraw/Components/Imakefile
+ src/include/Unidraw/Components/component.h
+ src/include/Unidraw/Components/compview.h
src/include/Unidraw/Graphic/Imakefile
src/include/Unidraw/Graphic/geomobjs.h
src/include/Unidraw/Graphic/util.h
src/include/Unidraw/Imakefile
src/include/Unidraw/_defines.h
src/include/Unidraw/_undefs.h
+ src/include/Unidraw/catalog.h
+ src/include/Unidraw/classes.h
+ src/include/Unidraw/creator.h
src/include/Unidraw/enter-scope.h
src/include/Unidraw/globals.h
src/include/Unidraw/iterator.h
src/include/Unidraw/leave-scope.h
+ src/include/Unidraw/uarray.h
+ src/include/Unidraw/uformat.h
+ src/include/Unidraw/uhash.h
src/include/Unidraw/ulist.h
+ src/include/Unidraw/umap.h
+ src/include/Unidraw/unidraw.h
src/include/ivstd/Imakefile
src/include/ivstd/fstream.h
src/include/ivstd/iosfwd
***************
*** 257,263 ****
src/include/ivstd/string.h
src/include/ivstd/version.h
src/scripts/Imakefile
- src/scripts/anytopnm.sh
src/scripts/bsdinst.sh
src/scripts/chgsuffix.sh
src/scripts/cntsrclines.bash
--- 289,294 ----
Index: Attribute/attrvalue.c
diff -c Attribute/attrvalue.c:1.9 Attribute/attrvalue.c:1.10
*** Attribute/attrvalue.c:1.9 Tue Oct 16 17:23:45 2001
--- src/Attribute/attrvalue.c Fri Oct 19 09:27:24 2001
***************
*** 172,178 ****
AttributeValue& AttributeValue::operator= (const AttributeValue& sv) {
void* v1 = &_v;
const void* v2 = &sv._v;
! memcpy(v1, v2, sizeof(double));
_type = sv._type;
_command_symid = sv._command_symid;
#if 0 // disable symbol reference counting
--- 172,178 ----
AttributeValue& AttributeValue::operator= (const AttributeValue& sv) {
void* v1 = &_v;
const void* v2 = &sv._v;
! memcpy(v1, v2, sizeof(_v));
_type = sv._type;
_command_symid = sv._command_symid;
#if 0 // disable symbol reference counting
***************
*** 921,927 ****
void AttributeValue::assignval (const AttributeValue& av) {
void* v1 = &_v;
const void* v2 = &av._v;
! memcpy(v1, v2, sizeof(double));
_type = av._type;
_command_symid = av._command_symid;
#if 0 // this end of reference counting disabled as well
--- 921,927 ----
void AttributeValue::assignval (const AttributeValue& av) {
void* v1 = &_v;
const void* v2 = &av._v;
! memcpy(v1, v2, sizeof(_v));
_type = av._type;
_command_symid = av._command_symid;
#if 0 // this end of reference counting disabled as well
Index: ComTerp/comhandler.h
diff -c ComTerp/comhandler.h:1.5 ComTerp/comhandler.h:1.6
*** ComTerp/comhandler.h:1.5 Tue Jul 3 17:01:13 2001
--- src/ComTerp/comhandler.h Fri Oct 19 09:27:26 2001
***************
*** 148,153 ****
--- 148,159 ----
ComterpHandler(int id) { comterp_ = new ComTerpServ(); _handle = id;}
int get_handle() { return _handle;}
+ FILE* wrfptr() { return nil; }
+ // file pointer for writing to handle
+
+ FILE* rdfptr() { return nil; }
+ // file pointer for reading from handle
+
protected:
int _handle;
ComTerpServ* comterp_;
Index: ComTerp/comvalue.c
diff -c ComTerp/comvalue.c:1.7 ComTerp/comvalue.c:1.8
*** ComTerp/comvalue.c:1.7 Mon Oct 15 13:14:00 2001
--- src/ComTerp/comvalue.c Fri Oct 19 09:27:26 2001
***************
*** 96,102 ****
clear();
void* v1 = &_v;
void* v2 = &token->v;
! memcpy(v1, v2, sizeof(double));
switch (token->type) {
case TOK_STRING: type(StringType); break;
case TOK_CHAR: type(CharType); break;
--- 96,102 ----
clear();
void* v1 = &_v;
void* v2 = &token->v;
! memcpy(v1, v2, sizeof(_v));
switch (token->type) {
case TOK_STRING: type(StringType); break;
case TOK_CHAR: type(CharType); break;
Index: ComTerp/helpfunc.c
diff -c ComTerp/helpfunc.c:1.7 ComTerp/helpfunc.c:1.8
*** ComTerp/helpfunc.c:1.7 Thu Jul 5 12:31:09 2001
--- src/ComTerp/helpfunc.c Fri Oct 19 09:27:26 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 1998 Vectaport Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 15,21 ****
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
* IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
! * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
--- 16,22 ----
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
* IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
! vv * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
***************
*** 53,58 ****
--- 54,62 ----
static int all_symid = symbol_add("all");
ComValue allflag(stack_key(all_symid));
+ static int posteval_symid = symbol_add("posteval");
+ ComValue postevalflag(stack_key(posteval_symid));
+
static int aliases_symid = symbol_add("aliases");
ComValue aliasesflag(stack_key(aliases_symid));
***************
*** 63,69 ****
int nfuncs = 0;
/* build up table of command ids and flags to indicate if its an operator encased in quotes */
! if (allflag.is_false()) {
nfuncs = nargs();
comfuncs = new ComFunc*[nfuncs];
--- 67,73 ----
int nfuncs = 0;
/* build up table of command ids and flags to indicate if its an operator encased in quotes */
! if (allflag.is_false() && postevalflag.is_false()) {
nfuncs = nargs();
comfuncs = new ComFunc*[nfuncs];
***************
*** 112,117 ****
--- 116,123 ----
comterp()->localtable()->find(vptr, command_id);
if (vptr && ((ComValue*)vptr)->is_command()) {
comfuncs[j] = (ComFunc*)((ComValue*)vptr)->obj_val();
+ if (postevalflag.is_true() && !comfuncs[j]->post_eval())
+ comfuncs[j] = nil;
} else
comfuncs[j] = nil;
str_flags[j] = false;
***************
*** 132,138 ****
--- 138,148 ----
#else
filebuf fbuf(comterp()->handler() && comterp()->handler()->wrfptr()
? comterp()->handler()->wrfptr() : stdout, ios_base::out);
+ #if 1
ostream outs(comterp()->handler() ? (streambuf*)&fbuf : (streambuf*)&sbuf);
+ #else
+ ostream outs((streambuf*)&fbuf);
+ #endif
ostream *out = &outs;
#endif
***************
*** 171,177 ****
printed = true;
}
}
! if (!printed && command_ids[i]>=0) {
/* if symid is smaller than the highest operator it must be one */
if (command_ids[i]>=0 && command_ids[i]<=opr_tbl_topstr()) {
int op_ids[OPTYPE_NUM];
--- 181,187 ----
printed = true;
}
}
! if (!printed && command_ids[i]>=0 && comfuncs[i]) {
/* if symid is smaller than the highest operator it must be one */
if (command_ids[i]>=0 && command_ids[i]<=opr_tbl_topstr()) {
int op_ids[OPTYPE_NUM];
***************
*** 202,208 ****
}
}
! } else {
if (first)
first = false;
else
--- 212,218 ----
}
}
! } else if (comfuncs[i]) {
if (first)
first = false;
else
Index: ComTerp/helpfunc.h
diff -c ComTerp/helpfunc.h:1.1 ComTerp/helpfunc.h:1.2
*** ComTerp/helpfunc.h:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/helpfunc.h Fri Oct 19 09:27:26 2001
***************
*** 33,39 ****
class ComTerp;
//: help command for ComTerp.
! // help([command] [command...] :all) -- help for commands.
class HelpFunc : public ComFunc {
public:
HelpFunc(ComTerp*);
--- 33,39 ----
class ComTerp;
//: help command for ComTerp.
! // help([command] [command...] :all :posteval) -- help for commands.
class HelpFunc : public ComFunc {
public:
HelpFunc(ComTerp*);
***************
*** 41,47 ****
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "%s([command] [command...] :all) -- help for commands"; }
};
#endif /* !defined(_helpfunc_h) */
--- 41,49 ----
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "%s([command] [command...] :all :posteval) -- help for commands"; }
};
#endif /* !defined(_helpfunc_h) */
+
+
Index: ComTerp/listfunc.h
diff -c ComTerp/listfunc.h:1.4 ComTerp/listfunc.h:1.5
*** ComTerp/listfunc.h:1.4 Tue Oct 16 17:23:47 2001
--- src/ComTerp/listfunc.h Fri Oct 19 09:27:26 2001
***************
*** 44,50 ****
virtual void execute();
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "lst=%s([olst|strm]) -- create an empty list or copy existing one"; }
};
//: list member command for ComTerp.
--- 44,50 ----
virtual void execute();
virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "lst=%s([olst|strm]) -- create list, copy list, or convert stream"; }
};
//: list member command for ComTerp.
Index: ComTerp/strmfunc.c
diff -c ComTerp/strmfunc.c:1.8 ComTerp/strmfunc.c:1.9
*** ComTerp/strmfunc.c:1.8 Fri Oct 12 14:56:21 2001
--- src/ComTerp/strmfunc.c Fri Oct 19 09:27:26 2001
***************
*** 46,77 ****
}
void StreamFunc::execute() {
! ComValue operand1(stack_arg(0));
reset_stack();
if (operand1.is_stream()) {
! /* invoked by the next command */
! AttributeValueList* avl = operand1.stream_list();
! if (avl) {
! Iterator i;
! avl->First(i);
! AttributeValue* retval = avl->Done(i) ? nil : avl->GetAttrVal(i);
! if (retval) {
! push_stack(*retval);
! avl->Remove(retval);
! delete retval;
! } else {
! operand1.stream_list(nil);
! push_stack(ComValue::nullval());
! }
! } else
! push_stack(ComValue::nullval());
} else {
/* conversion operator */
if (operand1.is_array()) {
AttributeValueList* avl = new AttributeValueList(operand1.array_val());
ComValue stream(this, avl);
--- 46,74 ----
}
void StreamFunc::execute() {
! ComValue operand1(stack_arg_post_eval(0));
reset_stack();
if (operand1.is_stream()) {
! /* stream copy */
! AttributeValueList* old_avl = operand1.stream_list();
! AttributeValueList* new_avl = new AttributeValueList(old_avl);
! ComValue retval(operand1.stream_func(), new_avl);
! retval.stream_mode(operand1.stream_mode());
! push_stack(retval);
} else {
/* conversion operator */
+
+ static StreamNextFunc* snfunc = nil;
+ if (!snfunc) {
+ snfunc = new StreamNextFunc(comterp());
+ snfunc->funcid(symbol_add("stream"));
+ }
+
if (operand1.is_array()) {
AttributeValueList* avl = new AttributeValueList(operand1.array_val());
ComValue stream(this, avl);
***************
*** 87,93 ****
new AttributeValue(Attribute::class_symid(), (void*)attr);
avl->Append(av);
}
! ComValue stream(this, avl);
stream.stream_mode(-1); // for internal use (use by this func)
push_stack(stream);
}
--- 84,90 ----
new AttributeValue(Attribute::class_symid(), (void*)attr);
avl->Append(av);
}
! ComValue stream(snfunc, avl);
stream.stream_mode(-1); // for internal use (use by this func)
push_stack(stream);
}
***************
*** 97,102 ****
--- 94,130 ----
/*****************************************************************************/
+ int StreamNextFunc::_symid;
+
+ StreamNextFunc::StreamNextFunc(ComTerp* comterp) : StrmFunc(comterp) {
+ }
+
+ void StreamNextFunc::execute() {
+ ComValue operand1(stack_arg_post_eval(0));
+
+ reset_stack();
+
+ /* invoked by the next command */
+ AttributeValueList* avl = operand1.stream_list();
+ if (avl) {
+ Iterator i;
+ avl->First(i);
+ AttributeValue* retval = avl->Done(i) ? nil : avl->GetAttrVal(i);
+ if (retval) {
+ push_stack(*retval);
+ avl->Remove(retval);
+ delete retval;
+ } else {
+ operand1.stream_list(nil);
+ push_stack(ComValue::nullval());
+ }
+ } else
+ push_stack(ComValue::nullval());
+
+ }
+
+ /*****************************************************************************/
+
int ConcatFunc::_symid;
ConcatFunc::ConcatFunc(ComTerp* comterp) : StrmFunc(comterp) {
***************
*** 352,359 ****
/* internal use */
comterp->push_stack(*val);
((ComFunc*)val->stream_func())->exec(1,0);
! if (comterp->stack_top().is_null())
val->stream_list()->clear();
} else {
--- 380,393 ----
/* internal use */
comterp->push_stack(*val);
((ComFunc*)val->stream_func())->exec(1,0);
! if (comterp->stack_top().is_null()) {
!
! /* sub-stream return null, zero it, and return null for this one */
val->stream_list()->clear();
+ comterp->push_stack(ComValue::nullval());
+ streamv.stream_list()->clear();
+ return;
+ }
} else {
Index: ComTerp/strmfunc.h
diff -c ComTerp/strmfunc.h:1.6 ComTerp/strmfunc.h:1.7
*** ComTerp/strmfunc.h:1.6 Fri Oct 12 14:56:21 2001
--- src/ComTerp/strmfunc.h Fri Oct 19 09:27:26 2001
***************
*** 47,56 ****
StreamFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "strm=%s(list) -- convert list to stream"; }
CLASS_SYMID("StreamFunc");
};
--- 47,70 ----
StreamFunc(ComTerp*);
virtual void execute();
+ virtual boolean post_eval() { return true; }
virtual const char* docstring() {
! return "strm=%s(ostrm|list) -- copy stream or convert list"; }
CLASS_SYMID("StreamFunc");
+
+ };
+
+ //: hidden func used by next command for stream command
+ class StreamNextFunc : public StrmFunc {
+ public:
+ StreamNextFunc(ComTerp*);
+
+ virtual void execute();
+ virtual const char* docstring() {
+ return "hidden func used by next command for stream command."; }
+
+ CLASS_SYMID("StreamNextFunc");
};
Index: ComTerp/symbolfunc.c
diff -c ComTerp/symbolfunc.c:1.1 ComTerp/symbolfunc.c:1.2
*** ComTerp/symbolfunc.c:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/symbolfunc.c Fri Oct 19 09:27:26 2001
***************
*** 100,110 ****
if (numargs>1) {
AttributeValueList* avl = new AttributeValueList();
ComValue retval(avl);
! for (int i=0; i<numargs; i++)
! avl->Append(new AttributeValue(symbol_ids[i], AttributeValue::SymbolType));
push_stack(retval);
} else {
ComValue retval (symbol_ids[0], AttributeValue::SymbolType);
push_stack(retval);
}
--- 100,114 ----
if (numargs>1) {
AttributeValueList* avl = new AttributeValueList();
ComValue retval(avl);
! for (int i=0; i<numargs; i++) {
! AttributeValue* av = new AttributeValue(symbol_ids[i], AttributeValue::SymbolType);
! if (symbol_ids[i]<0) av->type(ComValue::UnknownType);
! avl->Append(av);
! }
push_stack(retval);
} else {
ComValue retval (symbol_ids[0], AttributeValue::SymbolType);
+ if (symbol_ids[0]<0) retval.type(ComValue::UnknownType);
push_stack(retval);
}
Index: ComTerp/symbolfunc.h
diff -c ComTerp/symbolfunc.h:1.1 ComTerp/symbolfunc.h:1.2
*** ComTerp/symbolfunc.h:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/symbolfunc.h Fri Oct 19 09:27:26 2001
***************
*** 40,46 ****
SymIdFunc(ComTerp*);
virtual void execute();
! virtual boolean post_eval() { return true; }
virtual const char* docstring() {
return "int|lst=%s(symbol [symbol ...]) -- return id(s) associated with symbol(s)"; }
};
--- 40,46 ----
SymIdFunc(ComTerp*);
virtual void execute();
! // virtual boolean post_eval() { return true; }
virtual const char* docstring() {
return "int|lst=%s(symbol [symbol ...]) -- return id(s) associated with symbol(s)"; }
};
***************
*** 75,81 ****
SymAddFunc(ComTerp*);
virtual void execute();
! virtual boolean post_eval() { return true; }
virtual const char* docstring() {
return "sym|lst=%s(symbol [symbol ...]) -- create symbol(s) and return without lookup"; }
};
--- 75,81 ----
SymAddFunc(ComTerp*);
virtual void execute();
! // virtual boolean post_eval() { return true; }
virtual const char* docstring() {
return "sym|lst=%s(symbol [symbol ...]) -- create symbol(s) and return without lookup"; }
};
Index: comterp/README
diff -c comterp/README:1.8 comterp/README:1.9
*** comterp/README:1.8 Tue Oct 16 17:23:49 2001
--- src/comterp_/README Fri Oct 19 09:27:28 2001
***************
*** 184,190 ****
val=next(strm) -- return next value from stream
! strm=stream(list) -- convert list to stream
CONTROL COMMANDS (using post evaluation):
--- 184,190 ----
val=next(strm) -- return next value from stream
! strm=stream(ostrm|list) -- copy stream or convert list
CONTROL COMMANDS (using post evaluation):
***************
*** 200,206 ****
OTHER COMMANDS
! help(cmdname [cmdname ...]) -- help for commands
val=trace([flag] :get) -- toggle or set trace mode
--- 200,206 ----
OTHER COMMANDS
! help(cmdname [cmdname ...] :all :posteval) -- help for commands
val=trace([flag] :get) -- toggle or set trace mode
Index: Time/Time.c
diff -c Time/Time.c:1.1 Time/Time.c:1.2
*** Time/Time.c:1.1 Thu Jan 4 15:32:05 2001
--- src/Time/Time.c Fri Oct 19 09:27:33 2001
***************
*** 51,57 ****
#endif
! #if defined(BSD) || defined(hpux) || defined(linux) || defined(__sun) || defined(__alpha) || defined(__CYGWIN__) || defined(__FreeBSD__)
#ifdef hpux
#include <time.h>
--- 51,57 ----
#endif
! #if defined(BSD) || defined(hpux) || defined(linux) || defined(__sun) || defined(__alpha) || defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__)
#ifdef hpux
#include <time.h>
Index: ComUnidraw/dialogfunc.c
diff -c ComUnidraw/dialogfunc.c:1.1 ComUnidraw/dialogfunc.c:1.2
*** ComUnidraw/dialogfunc.c:1.1 Thu Jan 4 15:33:09 2001
--- src/ComUnidraw/dialogfunc.c Fri Oct 19 09:27:46 2001
***************
*** 48,53 ****
--- 48,54 ----
reset_stack();
int status = GConfirmDialog::post(GetEditor()->GetWindow(), msgstrv.symbol_ptr());
ComValue retval(status);
+ if (status==-1) retval.type(ComValue::UnknownType);
push_stack(retval);
}
Index: man1_ivtools/comterp.1
diff -c man1_ivtools/comterp.1:1.8 man1_ivtools/comterp.1:1.9
*** man1_ivtools/comterp.1:1.8 Tue Oct 16 17:24:10 2001
--- src/man/man1/comterp.1 Fri Oct 19 09:27:54 2001
***************
*** 194,200 ****
val=next(stream) -- return next value from stream
! strm=stream(list) -- convert list to stream
.SH CONTROL COMMANDS (using post evaluation):
--- 194,200 ----
val=next(stream) -- return next value from stream
! strm=stream(ostrm|list) -- copy stream or convert list
.SH CONTROL COMMANDS (using post evaluation):
***************
*** 208,214 ****
.SH OTHER COMMANDS
! help(cmdname [cmdname ...]) -- help for commands
val=trace([flag] :get) -- toggle or set trace mode
--- 208,214 ----
.SH OTHER COMMANDS
! help(cmdname [cmdname ...] :all :posteval) -- help for commands
val=trace([flag] :get) -- toggle or set trace mode
*** /dev/null Fri Oct 19 09:27:58 PDT 2001
--- patches/ivtools-011019-johnston-078
*************** patches/ivtools-011019-johnston-078
*** 0 ****
--- 1 ----
+ ivtools-011019-johnston-078
|
|
From: <ivt...@li...> - 2001-10-17 00:26:45
|
Patch: ivtools-011016-johnston-077
For: ivtools-0.9.6
Author: joh...@us...
Subject: probably the last patch leading to 0.9.7
Requires:
This is an intermediate patch to ivtools-0.9.6. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- probably the last patch leading to 0.9.7
- set "." dot operator to 1) create AttributeList's as needed on the
fly, and 2) create an emtpy AttributeList when a second argument is
not given. For example:
a.b.c.d.e.f=100 # this now works, without having to create
# all the intermediate AttributeList's
x=dot(z) # creates an empty AttributeList z which is
# can be accessed through the variable x as well.
- go through all the math commands to ensure they return nil given any
nil argument.
- add a :set argument to the list at() command.
Index: top_ivtools/CHANGES
diff -c top_ivtools/CHANGES:1.7 top_ivtools/CHANGES:1.8
*** top_ivtools/CHANGES:1.7 Mon Aug 20 12:51:18 2001
--- ./CHANGES Tue Oct 16 17:23:43 2001
***************
*** 1,3 ****
--- 1,177 ----
+ Oct 16th 2001 ivtools-0.9.7
+
+ ** last release before 1.0 -- if things are ok with this distribution
+ I will simply roll over the version number **
+
+ - fix the pnmtopgm script to do the right thing for PBM files.
+
+ - better error messages when someone tries to open an idraw format
+ PostScript file that has ColorRast objects in it. These are rasters
+ that are color-printer ready, and do not conform the idraw format. A
+ future version upgrade of this format will include support for these.
+
+ As an aside, these ColorRast objects cannot be filtered through
+ pstoedit either (pstoedit -f idraw), because they have separate
+ sources for R, G, and B. A future pstoedit back-end for the ivtools
+ drawtool format would be needed to make this work instead, one that
+ relied on the ghostscript mechanism for dumping out rasters to PNG
+ files.
+
+ - modifies the pstoedit import command lines to always use a temporary
+ file for output with a %d indicator to support multi-page files.
+
+ - add a StreamObject to AttributeValue/ComValue. This consists of a
+ pointer to a ComFunc to use in getting the next value out of a stream,
+ and local data storage to indicate current position. Sort of a
+ procedural iterator.
+
+ - add streaming mechanism to comterp, that leverages the ".." iterate
+ and "**" repeat operators. Now arbitrary expressions can be composed
+ where each operator is overdriven (repeatedly executed) by one or more
+ of its arguments. Some examples:
+
+ s1=0..10 # stream that iterates from 0 to 10
+
+ s2=0..10*3 # stream that iterates from 0 to 30 in steps of 3
+
+ next(s1) # returns 0 on first call, incremented by 1 each call after
+
+ next(s2) # returns 0 on first call, incremented by 3 each call after
+
+ A more complicated example counts to 4 Meg without using megs of memory:
+
+ s=1..pow(2 22)
+ x=0
+ while(next(s) x++)
+
+ An example for computing a ramp step-function for a look-up-table:
+
+ 0..255-0..255%10
+
+ Overdriven streaming operators were first presented here:
+
+ "Command Language for Developing Real-Time Signal and Image Processing
+ Applications", S. Johnston, R.C. Fitch, SPIE Proceedings on Automated
+ Inspection and High Speed Vision Architectures II, vol. 1004,
+ Nov. 1988.
+
+ - fix != comparison of symbols. Found this problem when experimenting
+ with the new stream objects. A while loop terminates on either 0 or
+ nil, but a stream terminates with only nil. To differentiate nil from
+ 0 I looked at the return type:
+
+ s=0..255
+ while(`type(v=next(s))!=`type(nil) print("%d\n" v))
+
+ This didn't work without this change.
+
+ - adds partial-string (:n) and symbol (:sym) comparison to the rest of
+ the equality operators (!=, >, <, >=, <=).
+
+ - add :nilchk option to terminate the while loop upon nil (instead of
+ nil and zero).
+
+ - make the seq operator (;) post-evaluated so that this works:
+
+ s=0..100;while(v=next(s) print("%d " v) :nilchk)
+
+ Without post-eval the stream on the left would overdrive the ";",
+ which just didn't work.
+
+ - more work on new stream and list concepts in comterp. Now ",," is
+ the stream concatenator, and "," remains the list concatenator.
+ stream(lst) converts a list to a stream, and list(strm) will converts
+ a stream to a list (as soon as I debug it).
+
+ - makes list(strm) work. Now you can convert streams to lists and
+ lists to streams (with stream(lst)).
+
+ - equate lists to arrays in all the API of ComValue, and make
+ type(strm) return ListType instead of ArrayType.
+
+ - fix problem with interacting with the KDE X server. Seems all other
+ X servers allow a negative "length" argument, which causes the server
+ to index backwards from a data pointer. This was not documented in
+ the man pages, so the KDE folks "fixed" the problem by changing the
+ code instead of the man page. So I have to fix the code as well.
+
+ - Now the streams are really flowing. The ",," concatenation operator
+ works for the most part, allowing for the composition of complex
+ streams like this:
+
+ s=0,,1,,2,,3**3,,4+100
+
+ which generates the sequence:
+
+ 100 101 102 103 103 103 104 nil
+
+ Probably a few minor issues left to clean up. So far I've discovered:
+
+ 0,1**2
+
+ works partially as expected, generating a {0,1} followed by a {0,1}.
+ But then it generates a {0,nil} repeatedly, never terminating. Hmmmm.
+
+ - make ",," concat operator lower priority than the "," tuple
+ operator. This means these two examples behave in a similar fashion:
+
+ s=1,2,,3 # yields {1,2} followed by a 3
+
+ s=1,2,3,,4 # yields {1,2,3} followed by a 4
+
+ and you can construct 2-d structures in a pleasing way:
+
+ s=1,2,3,,4,5,6,,7,8,9 # 3x3 grid
+
+ - ensure streaming doesn't happen on post-evaluated commands.
+
+ - create a hidden :strmlst argument to the list command, to have a way
+ at looking at the AttributeValueList associated with a stream object.
+
+ - NetBSD compile fix
+
+ - fix the AttributeValueList constructor so it does a list copy as it
+ advertises.
+
+ - evaluate symbols when popping them off the stack to build a stream
+ object. This may not be desirable in the long run, and it really
+ wasn't causing any problem to delay this that I know of. Hmmm...
+
+ - make the default value of the second "at" argument zero instead of
+ nil, so that if nil is supplied it can be used to return nil (to
+ terminate stream handling).
+
+ - set up to "stream" over an AttributeList.
+
+ - ensure ComValue::is_true() returns true for StreamType that exists.
+
+ - touchups to glyph-based graphics (Graphic31). There were
+ difficult-to-decipher problems in allocate/requisition which clipped
+ graphics by one row or one column. So I just padded things a bit.
+ This is only used in the addtool (custom toolbutton) mechanism of
+ comdraw.
+
+ - revert to using "r" instead of "r+" in fopen calls for graphics
+ files to be read in. I had added "r+" when gcc-3.0 needed it to allow
+ rewinding. Now gcc-3.0.1 has that fixed, and "r+" got in the way of
+ read-only access (CD-ROMS).
+
+ - set "." dot operator to 1) create AttributeList's as needed on the
+ fly, and 2) create an emtpy AttributeList when a second argument is
+ not given. For example:
+
+ a.b.c.d.e.f=100 # this now works, without having to create
+ # all the intermediate AttributeList's
+
+ x=dot(z) # creates an empty AttributeList z which is
+ # can be accessed through the variable x as well.
+
+ - go through all the math commands to ensure they return nil given any
+ nil argument.
+
+ - add a :set argument to the list at() command.
+
+
Aug 20th 2001 ivtools-0.9.6
- minor adjustments to adapt to gcc-3.0.1. One advantage of upgrading
Index: top_ivtools/COPYING
diff -c top_ivtools/COPYING:1.2 top_ivtools/COPYING:1.3
*** top_ivtools/COPYING:1.2 Wed Jul 25 17:43:07 2001
--- ./COPYING Tue Oct 16 17:23:43 2001
***************
*** 8,13 ****
provisions for possible GPL-only enhancements) if requested by other
collaborators.
-
Scott Johnston
--- 8,13 ----
provisions for possible GPL-only enhancements) if requested by other
collaborators.
Scott Johnston
+ http://www.ivtools.org
Index: top_ivtools/INSTALL
diff -c top_ivtools/INSTALL:1.10 top_ivtools/INSTALL:1.11
*** top_ivtools/INSTALL:1.10 Mon Aug 20 12:51:18 2001
--- ./INSTALL Tue Oct 16 17:23:43 2001
***************
*** 1,23 ****
INSTALL for ivtools-0.9
! Instructions for building ivtools-0.9.6 from source:
0. Compilation Environment
Things you will need (or might want) before building ivtools:
! 0.a. a Unix machine. We know it has been built on Linux, NetBSD,
! FreeBSD, Solaris, Irix, Dec Alpha, HPUX, and SunOS. Alternately it
! can be built on Windows NT with the Cygwin utilities from RedHat. See
! README.cygwin for details.
0.b. The gcc compiler. Recently we've been building and testing with
! egcs-1.0.3, gcc-2.95.*, and gcc-3.0. gcc-2.8.1 would still work, as
probably would gcc-2.7.2. You will also need an equivalent copy of
! libstdc++. The libstdc++ version numbers stay roughly in synch with
! the gcc version numbers. If you have gcc-2.8.1 you'd want
! libstdc++-2.8.1, etc.. libstdc++ comes bundled with gcc-3.0.
Be aware that sometimes the include files for libstdc++ are in
/usr/local/include/g++-2, a place that cannot be auto-determined by
--- 1,31 ----
INSTALL for ivtools-0.9
! Instructions for building ivtools-0.9.7 from source, the short version:
+ ./configure
+ make
+ su -c "make install"
+
+
+ And if that doesn't work...
+
+ Instructions for building ivtools-0.9.7 from source, the long version:
+
0. Compilation Environment
Things you will need (or might want) before building ivtools:
! 0.a. a Unix machine (for Windows see README.cygwin). We know it has
! been built on Linux, NetBSD, FreeBSD, Solaris, Irix, Dec Alpha, HPUX,
! and SunOS.
0.b. The gcc compiler. Recently we've been building and testing with
! egcs-1.0.3, gcc-2.95.*, and gcc-3.0.1. gcc-2.8.1 would still work, as
probably would gcc-2.7.2. You will also need an equivalent copy of
! libstdc++. libstdc++ comes bundled with gcc-3.0. Before that the
! libstdc++ version numbers stay roughly in synch with the gcc version
! numbers. If you have gcc-2.8.1 you'd want libstdc++-2.8.1, etc..
Be aware that sometimes the include files for libstdc++ are in
/usr/local/include/g++-2, a place that cannot be auto-determined by
***************
*** 92,99 ****
1.a. You no longer need to set your CPU environment variable to build
ivtools, but you still need a CPU specific configuration file.
Ready-made configurations that have been known to work exist for
! LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, and now
! CYGWIN (for Windows NT).
Use "make CPU" from the top directory to see the symbol ivtools will
use for your OS (grep config/arch.def for ArchitectureName to get a
--- 100,109 ----
1.a. You no longer need to set your CPU environment variable to build
ivtools, but you still need a CPU specific configuration file.
Ready-made configurations that have been known to work exist for
! LINUX, SUN4 (and Solaris), SGI, HP800 (HPUX), ALPHA, NETSBD, FREEBSD,
! and CYGWIN (for Windows NT). HPUX config file is known to be out of
! quite out of date, the others will probably work with little or no
! tweaks.
Use "make CPU" from the top directory to see the symbol ivtools will
use for your OS (grep config/arch.def for ArchitectureName to get a
Index: top_ivtools/README
diff -c top_ivtools/README:1.7 top_ivtools/README:1.8
*** top_ivtools/README:1.7 Mon Aug 20 12:51:18 2001
--- ./README Tue Oct 16 17:23:43 2001
***************
*** 2,8 ****
README for ivtools 0.9
! This directory contains a release of ivtools 0.9.6. You should read
the rest of this file for information on what ivtools is and the
INSTALL file for instructions on how to build it.
--- 2,8 ----
README for ivtools 0.9
! This directory contains a release of ivtools 0.9.7. You should read
the rest of this file for information on what ivtools is and the
INSTALL file for instructions on how to build it.
***************
*** 12,17 ****
--- 12,21 ----
* What is ivtools?:
+ Online documentation (including an FAQ) is available for ivtools at:
+
+ http://www.ivtools.org/ivtools/doc/
+
ivtools is a layered collection of application frameworks for building
custom drawing editors and spatial data servers. It incorporates a
backward compatible copy of the original InterViews and Unidraw class
***************
*** 115,144 ****
* More ivtools details
ivtools is known to build with many versions of gcc (<= gcc-2.7.2, >=
! gcc-2.8.1, >= egcs-1.0.1, even gcc-3.0) and on a variety of Unix'es:
SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5),
Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru
! 6.0, Debian 2.*), NetBSD, and perhaps now FreeBSD. There are
! contributed configs that are out of date for HPUX and Dec
! Alpha. Recently it has been built on Windows NT 4.0 using Cygwin from
! Cygnus Solutions (see README.cygwin). You can pick up Linux-ELF
! binaries from the ivtools web page (http://www.ivtools.org).
If you have a question about this software, desire to add code, found
a bug, want to request a feature, or wonder how to get further
assistance, please send e-mail to the general purpose ivtools mailing
! list, ivt...@li..., or this e-mail address:
ivt...@ve.... To subcribe to the mailing list, visit
! http://lists.sourceforge.net/mailman/listinfo/ivtools-discuss or send
an informal request to ivt...@ve.... Other ivtools
related mailing lists can be found at:
http://www.ivtools.org/ivtools/mailinglists.html
- Online documentation (including an FAQ) is available for ivtools at:
-
- http://www.ivtools.org/ivtools/doc/
-
Read about finding and generating all this from inline documentation
below. A copy of the ivtools html documentation will be available for
download as well:
--- 119,145 ----
* More ivtools details
ivtools is known to build with many versions of gcc (<= gcc-2.7.2, >=
! gcc-2.8.1, >= egcs-1.0.1, gcc-3.0.1) and on a variety of Unix'es:
SunOS 4.1 (MIT's X11R5), Solaris 2.6 (X11R6), Irix 5.2 (SGI's X11R5),
Linux 1.2 (Slackware 3.0, XFree86 3.1), Linux 2.* (RedHat 4.0 thru
! 6.0, Debian 2.*), NetBSD, and FreeBSD. There are contributed configs
! that are out of date for HPUX and Dec Alpha. It has been built on
! Windows NT 4.0 using Cygwin from Cygnus Solutions (see README.cygwin).
! You can find links to available binaries on the ivtools web page
! (http://www.ivtools.org) and ivtools download page
! (http://www.ivtools.org/ivtools/download.html)
If you have a question about this software, desire to add code, found
a bug, want to request a feature, or wonder how to get further
assistance, please send e-mail to the general purpose ivtools mailing
! list, ivt...@li..., or this e-mail address:
ivt...@ve.... To subcribe to the mailing list, visit
! http://lists.sourceforge.net/mailman/listinfo/ivtools-user or send
an informal request to ivt...@ve.... Other ivtools
related mailing lists can be found at:
http://www.ivtools.org/ivtools/mailinglists.html
Read about finding and generating all this from inline documentation
below. A copy of the ivtools html documentation will be available for
download as well:
***************
*** 157,164 ****
Extensive documentation is embedded within the ivtools source tree,
including most all of the documentation originally available for
! InterViews 3.1 and Unidraw. Here is a list:
- README/man pages for executable programs
Within most directories that contain an executable program
--- 158,170 ----
Extensive documentation is embedded within the ivtools source tree,
including most all of the documentation originally available for
! InterViews 3.1 and Unidraw. You can find all of it pre-extracted
! here:
!
! http://www.ivtools.org/ivtools/doc/
+ Here is a list of documentation:
+
- README/man pages for executable programs
Within most directories that contain an executable program
***************
*** 229,241 ****
* Acknowledgements:
! ivtools programmers at Vectaport (http://www.vectaport.com):
Scott Johnston
Jorge Gautier
-
- ivtools programmers at large:
-
Brian Hogencamp
Rick Kissh
Eric Kahler
--- 235,244 ----
* Acknowledgements:
! Roster of ivtools programmers:
Scott Johnston
Jorge Gautier
Brian Hogencamp
Rick Kissh
Eric Kahler
Index: top_ivtools/VERSION
diff -c top_ivtools/VERSION:1.7 top_ivtools/VERSION:1.8
*** top_ivtools/VERSION:1.7 Mon Aug 20 12:51:18 2001
--- ./VERSION Tue Oct 16 17:23:43 2001
***************
*** 1 ****
! Release 0.9.6
--- 1 ----
! Release 0.9.7
Index: Attribute/attrvalue.c
diff -c Attribute/attrvalue.c:1.8 Attribute/attrvalue.c:1.9
*** Attribute/attrvalue.c:1.8 Thu Oct 11 15:20:27 2001
--- src/Attribute/attrvalue.c Tue Oct 16 17:23:45 2001
***************
*** 836,841 ****
--- 836,845 ----
out << "<" << symbol_pntr(svp->class_symid()) << ">";
break;
+ case AttributeValue::StreamType:
+ out << "<stream:" << svp->stream_mode() << ">";
+ break;
+
default:
out << "nil";
break;
Index: ComTerp/assignfunc.c
diff -c ComTerp/assignfunc.c:1.2 ComTerp/assignfunc.c:1.3
*** ComTerp/assignfunc.c:1.2 Fri Oct 12 14:56:20 2001
--- src/ComTerp/assignfunc.c Tue Oct 16 17:23:47 2001
***************
*** 63,70 ****
Attribute* attr = (Attribute*)operand1.obj_val();
attr->Value(operand2);
} else {
! cerr << "assignment to something other than a symbol ignored\n";
! // should say something about assignment from something other than a symbol as well.
delete operand2;
}
push_stack(*operand2);
--- 63,69 ----
Attribute* attr = (Attribute*)operand1.obj_val();
attr->Value(operand2);
} else {
! cerr << "assignment to something other than a symbol or attribute ignored\n";
delete operand2;
}
push_stack(*operand2);
Index: ComTerp/comfunc.c
diff -c ComTerp/comfunc.c:1.1 ComTerp/comfunc.c:1.2
*** ComTerp/comfunc.c:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/comfunc.c Tue Oct 16 17:23:47 2001
***************
*** 61,73 ****
for (int i=0; i<count; i++) {
ComValue& argref = _comterp->stack_top(i-count+1);
if( argref.type() == ComValue::KeywordType)
! return ComValue::nullval();
if (i == n) {
if (i+1 < count) {
ComValue& keyref = _comterp->stack_top(i-count+2);
if (keyref.is_type(ComValue::KeywordType) &&
keyref.keynarg_val())
! return ComValue::nullval();
}
if (!symbol)
argref = _comterp->lookup_symval(argref);
--- 61,73 ----
for (int i=0; i<count; i++) {
ComValue& argref = _comterp->stack_top(i-count+1);
if( argref.type() == ComValue::KeywordType)
! return dflt;
if (i == n) {
if (i+1 < count) {
ComValue& keyref = _comterp->stack_top(i-count+2);
if (keyref.is_type(ComValue::KeywordType) &&
keyref.keynarg_val())
! return dflt;
}
if (!symbol)
argref = _comterp->lookup_symval(argref);
Index: ComTerp/dotfunc.c
diff -c ComTerp/dotfunc.c:1.1 ComTerp/dotfunc.c:1.2
*** ComTerp/dotfunc.c:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/dotfunc.c Tue Oct 16 17:23:47 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 2000 IET Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 40,53 ****
ComValue before_part(stack_arg(0, true));
ComValue after_part(stack_arg(1, true));
reset_stack();
if (!before_part.is_symbol() &&
!(before_part.is_attribute() &&
! ((Attribute*)before_part.obj_val())->Value()->is_attributelist()) &&
!before_part.is_attributelist()) {
cerr << "expression before \".\" needs to evaluate to a symbol or <AttributeList>\n";
return;
}
! if (!after_part.is_symbol()) {
cerr << "expression after \".\" needs to be a symbol or evaluate to a symbol\n";
return;
}
--- 41,56 ----
ComValue before_part(stack_arg(0, true));
ComValue after_part(stack_arg(1, true));
reset_stack();
+
if (!before_part.is_symbol() &&
!(before_part.is_attribute() &&
! (((Attribute*)before_part.obj_val())->Value()->is_unknown() ||
! ((Attribute*)before_part.obj_val())->Value()->is_attributelist())) &&
!before_part.is_attributelist()) {
cerr << "expression before \".\" needs to evaluate to a symbol or <AttributeList>\n";
return;
}
! if (nargs()>1 && !after_part.is_symbol()) {
cerr << "expression after \".\" needs to be a symbol or evaluate to a symbol\n";
return;
}
***************
*** 74,93 ****
comterp()->localtable()->insert(before_symid, comval);
else
comterp()->globaltable()->insert(before_symid, comval);
}
! } else if (!before_part.is_attributelist())
! al = (AttributeList*) ((Attribute*) before_part.obj_val())->Value()->obj_val();
! else
al = (AttributeList*) before_part.obj_val();
! int after_symid = after_part.symbol_val();
! Attribute* attr = al ? al->GetAttr(after_symid) : nil;
! if (!attr) {
! attr = new Attribute(after_symid, new AttributeValue());
! al->add_attribute(attr);
}
- ComValue retval(Attribute::class_symid(), attr);
- push_stack(retval);
}
/*****************************************************************************/
--- 77,107 ----
comterp()->localtable()->insert(before_symid, comval);
else
comterp()->globaltable()->insert(before_symid, comval);
+ }
+ } else if (!before_part.is_attributelist()) {
+ if (((Attribute*)before_part.obj_val())->Value()->is_attributelist())
+ al = (AttributeList*) ((Attribute*) before_part.obj_val())->Value()->obj_val();
+ else {
+ al = new AttributeList();
+ AttributeValue newval(AttributeList::class_symid(), (void*) al);
+ *((Attribute*)before_part.obj_val())->Value() = newval;
}
! } else
al = (AttributeList*) before_part.obj_val();
! if (nargs()>1) {
! int after_symid = after_part.symbol_val();
! Attribute* attr = al ? al->GetAttr(after_symid) : nil;
! if (!attr) {
! attr = new Attribute(after_symid, new AttributeValue());
! al->add_attribute(attr);
! }
! ComValue retval(Attribute::class_symid(), attr);
! push_stack(retval);
! } else {
! ComValue retval(AttributeList::class_symid(), al);
! push_stack(retval);
}
}
/*****************************************************************************/
Index: ComTerp/dotfunc.h
diff -c ComTerp/dotfunc.h:1.2 ComTerp/dotfunc.h:1.3
*** ComTerp/dotfunc.h:1.2 Mon Apr 30 16:32:33 2001
--- src/ComTerp/dotfunc.h Tue Oct 16 17:23:47 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 2000 IET Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 30,43 ****
#include <ComTerp/numfunc.h>
! //: . (dot) operator, for compound variables.
class DotFunc : public ComFunc {
public:
DotFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "%s (.) makes compound variables"; }
CLASS_SYMID("DotFunc");
};
--- 31,44 ----
#include <ComTerp/numfunc.h>
! //: . (dot) operator, for compound variables | dotlst=dot(name) -- construct empty dottted pair list.
class DotFunc : public ComFunc {
public:
DotFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "%s (.) makes compound variables | dotlst=dot(name) -- construct empty dotted pair list"; }
CLASS_SYMID("DotFunc");
};
Index: ComTerp/listfunc.c
diff -c ComTerp/listfunc.c:1.6 ComTerp/listfunc.c:1.7
*** ComTerp/listfunc.c:1.6 Fri Oct 12 14:56:21 2001
--- src/ComTerp/listfunc.c Tue Oct 16 17:23:47 2001
***************
*** 91,96 ****
--- 91,100 ----
void ListAtFunc::execute() {
ComValue listv(stack_arg(0));
ComValue nv(stack_arg(1, false, ComValue::zeroval()));
+ static int set_symid = symbol_add("set");
+ ComValue setv(stack_key(set_symid, false, ComValue::blankval(), true /* return blank if no :set */));
+ boolean setflag = !setv.is_blank();
+
reset_stack();
if (listv.is_type(ComValue::ArrayType) && !nv.is_nil() && nv.int_val()>=0) {
***************
*** 100,105 ****
--- 104,111 ----
Iterator it;
for (avl->First(it); !avl->Done(it); avl->Next(it)) {
if (count==nv.int_val()) {
+ if (setflag)
+ *avl->GetAttrVal(it) = setv;
push_stack(*avl->GetAttrVal(it));
return;
}
***************
*** 114,119 ****
--- 120,127 ----
for (al->First(it); !al->Done(it); al->Next(it)) {
if (count==nv.int_val()) {
ComValue retval(Attribute::class_symid(), (void*) al->GetAttr(it));
+ if (setflag)
+ *al->GetAttr(it)->Value() = setv;
push_stack(retval);
return;
}
Index: ComTerp/listfunc.h
diff -c ComTerp/listfunc.h:1.3 ComTerp/listfunc.h:1.4
*** ComTerp/listfunc.h:1.3 Thu Oct 11 15:20:28 2001
--- src/ComTerp/listfunc.h Tue Oct 16 17:23:47 2001
***************
*** 48,61 ****
};
//: list member command for ComTerp.
! // val=at(list|attrlist n) -- return the nth item in a list.
class ListAtFunc : public ComFunc {
public:
ListAtFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "val=at(list|attrlist n) -- return the nth item in a list"; }
};
//: list size command for ComTerp.
--- 48,61 ----
};
//: list member command for ComTerp.
! // val=at(list|attrlist n :set val) -- return (or set) the nth item in a list.
class ListAtFunc : public ComFunc {
public:
ListAtFunc(ComTerp*);
virtual void execute();
virtual const char* docstring() {
! return "val=at(list|attrlist n :set val) -- return (or set) the nth item in a list"; }
};
//: list size command for ComTerp.
Index: ComTerp/mathfunc.c
diff -c ComTerp/mathfunc.c:1.1 ComTerp/mathfunc.c:1.2
*** ComTerp/mathfunc.c:1.1 Thu Jan 4 15:31:42 2001
--- src/ComTerp/mathfunc.c Tue Oct 16 17:23:47 2001
***************
*** 1,4 ****
--- 1,5 ----
/*
+ * Copyright (c) 2001 Scott E. Johnston
* Copyright (c) 1998 Vectaport Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
***************
*** 36,41 ****
--- 37,46 ----
void ExpFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(exp(operandx.double_val()));
push_stack(result);
}
***************
*** 46,51 ****
--- 51,60 ----
void LogFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(log(operandx.double_val()));
push_stack(result);
}
***************
*** 56,61 ****
--- 65,74 ----
void Log10Func::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(log10(operandx.double_val()));
push_stack(result);
}
***************
*** 67,72 ****
--- 80,89 ----
ComValue operandx = stack_arg(0);
ComValue operandy = stack_arg(1);
reset_stack();
+ if (operandx.is_nil() || operandy.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(pow(operandx.double_val(), operandy.double_val()));
push_stack(result);
}
***************
*** 77,82 ****
--- 94,103 ----
void ACosFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(acos(operandx.double_val()));
push_stack(result);
}
***************
*** 87,92 ****
--- 108,117 ----
void ASinFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(asin(operandx.double_val()));
push_stack(result);
}
***************
*** 97,102 ****
--- 122,131 ----
void ATanFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(atan(operandx.double_val()));
push_stack(result);
}
***************
*** 108,113 ****
--- 137,146 ----
ComValue operandx = stack_arg(0);
ComValue operandy = stack_arg(0);
reset_stack();
+ if (operandx.is_nil() || operandy.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(atan2(operandx.double_val(),operandy.double_val()));
push_stack(result);
}
***************
*** 118,123 ****
--- 151,160 ----
void CosFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(cos(operandx.double_val()));
push_stack(result);
}
***************
*** 128,133 ****
--- 165,174 ----
void SinFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(sin(operandx.double_val()));
push_stack(result);
}
***************
*** 138,143 ****
--- 179,188 ----
void TanFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(tan(operandx.double_val()));
push_stack(result);
}
***************
*** 148,154 ****
void SqrtFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
ComValue result(sqrt(operandx.double_val()));
push_stack(result);
}
-
--- 193,202 ----
void SqrtFunc::execute() {
ComValue operandx = stack_arg(0);
reset_stack();
+ if (operandx.is_nil()) {
+ push_stack(ComValue::nullval());
+ return;
+ }
ComValue result(sqrt(operandx.double_val()));
push_stack(result);
}
Index: ComTerp/numfunc.c
diff -c ComTerp/numfunc.c:1.2 ComTerp/numfunc.c:1.3
*** ComTerp/numfunc.c:1.2 Mon Sep 24 17:21:25 2001
--- src/ComTerp/numfunc.c Tue Oct 16 17:23:47 2001
***************
*** 667,673 ****
void CharFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.char_val(), ComValue::CharType);
reset_stack();
push_stack(result);
}
--- 667,674 ----
void CharFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.char_val(),
! operand.is_nil() ? ComValue::UnknownType : ComValue::CharType);
reset_stack();
push_stack(result);
}
***************
*** 676,682 ****
void ShortFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.short_val(), ComValue::ShortType);
reset_stack();
push_stack(result);
}
--- 677,684 ----
void ShortFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.short_val(),
! operand.is_nil() ? ComValue::UnknownType : ComValue::ShortType);
reset_stack();
push_stack(result);
}
***************
*** 685,691 ****
void IntFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.int_val(), ComValue::IntType);
reset_stack();
push_stack(result);
}
--- 687,694 ----
void IntFunc::execute() {
ComValue& operand = stack_arg(0);
! ComValue result(operand.int_val(),
! operand.is_nil() ? ComValue::UnknownType : ComValue::IntType);
reset_stack();
push_stack(result);
}
***************
*** 695,700 ****
--- 698,704 ----
void LongFunc::execute() {
ComValue& operand = stack_arg(0);
ComValue result(operand.long_val());
+ if (operand.is_nil()) result.type(ComValue::UnknownType);
reset_stack();
push_stack(result);
}
***************
*** 704,709 ****
--- 708,714 ----
void FloatFunc::execute() {
ComValue& operand = stack_arg(0);
ComValue result(operand.float_val());
+ if (operand.is_nil()) result.type(ComValue::UnknownType);
reset_stack();
push_stack(result);
}
***************
*** 713,718 ****
--- 718,724 ----
void DoubleFunc::execute() {
ComValue& operand = stack_arg(0);
ComValue result(operand.double_val());
+ if (operand.is_nil()) result.type(ComValue::UnknownType);
reset_stack();
push_stack(result);
}
Index: comterp/README
diff -c comterp/README:1.7 comterp/README:1.8
*** comterp/README:1.7 Mon Oct 8 13:05:07 2001
--- src/comterp_/README Tue Oct 16 17:23:49 2001
***************
*** 175,181 ****
lst=list([olst|strm]) -- create list, copy list, or convert stream
! val=at(list|attrlist n) -- return nth item in a list
num=size(list|attrlist) -- return size of a list
--- 175,181 ----
lst=list([olst|strm]) -- create list, copy list, or convert stream
! val=at(list|attrlist n :set val ) -- return (or set) nth item in a list
num=size(list|attrlist) -- return size of a list
***************
*** 232,237 ****
--- 232,238 ----
sym=attrname(attribute) -- return name field of dotted pair
val=attrval(attribute) -- return value field of dotted pair
+ dotlst=dot(name) -- construct empty dotted pair list
quit() -- quit the interpreter
Index: include_std/version.h
diff -c include_std/version.h:1.7 include_std/version.h:1.8
*** include_std/version.h:1.7 Mon Aug 20 12:52:03 2001
--- src/include/ivstd/version.h Tue Oct 16 17:24:07 2001
***************
*** 1,3 ****
! #define IvtoolsVersion 0.9.6
! #define VersionString "0.9.6"
! #define ReleaseString "ivtools-0.9.6"
--- 1,3 ----
! #define IvtoolsVersion 0.9.7
! #define VersionString "0.9.7"
! #define ReleaseString "ivtools-0.9.7"
Index: man1_ivtools/comterp.1
diff -c man1_ivtools/comterp.1:1.7 man1_ivtools/comterp.1:1.8
*** man1_ivtools/comterp.1:1.7 Mon Oct 8 13:05:24 2001
--- src/man/man1/comterp.1 Tue Oct 16 17:24:10 2001
***************
*** 186,192 ****
lst=list([olst|strm]) -- create list, copy list, or convert stream
! val=at(list|attrlist n) -- return nth item in a list
num=size(list|attrlist) -- return size of a list
--- 186,192 ----
lst=list([olst|strm]) -- create list, copy list, or convert stream
! val=at(list|attrlist n :set val) -- return (or set) nth item in a list
num=size(list|attrlist) -- return size of a list
***************
*** 237,242 ****
--- 237,243 ----
sym=attrname(attribute) -- return name field of dotted pair
val=attrval(attribute) -- return value field of dotted pair
+ dotlst=dot(name) -- construct empty dotted pair list
quit() -- quit the interpreter
Index: config_ivtools/params.def
diff -c config_ivtools/params.def:1.10 config_ivtools/params.def:1.11
*** config_ivtools/params.def:1.10 Mon Aug 20 12:52:11 2001
--- config/params.def Tue Oct 16 17:24:12 2001
***************
*** 27,33 ****
* Name of the software release
*/
#ifndef Release
! #define Release ivtools-0.9.6
#endif
RELEASE = Release
--- 27,33 ----
* Name of the software release
*/
#ifndef Release
! #define Release ivtools-0.9.7
#endif
RELEASE = Release
***************
*** 36,42 ****
* VersionNumber
*/
#ifndef Version
! #define Version 0.9.6
#endif
VERSION = Version
--- 36,42 ----
* VersionNumber
*/
#ifndef Version
! #define Version 0.9.7
#endif
VERSION = Version
*** /dev/null Tue Oct 16 17:24:14 PDT 2001
--- patches/ivtools-011016-johnston-077
*************** patches/ivtools-011016-johnston-077
*** 0 ****
--- 1 ----
+ ivtools-011016-johnston-077
|
|
From: <ivt...@li...> - 2001-10-15 20:23:33
|
Patch: ivtools-011015-johnston-076
For: ivtools-0.9.6
Author: joh...@us...
Subject: make streams work for attributes, print empty list as {}
Requires:
This is an intermediate patch to ivtools-0.9.6. To apply, cd to the
top-level directory of the ivtools source tree (the directory with src
and config subdirs), and apply like this:
patch -p0 <ThisFile
Summary of Changes:
- make the streaming mechanism work for streams held as attribute
values, i.e. this now works:
a.b=0..100
a.c=100..200
s=a.b+a.c
- print an empty list as an empty set of braces -- {}.
Index: ComTerp/comterp.c
diff -c ComTerp/comterp.c:1.13 ComTerp/comterp.c:1.14
*** ComTerp/comterp.c:1.13 Thu Oct 11 15:20:28 2001
--- src/ComTerp/comterp.c Mon Oct 15 13:14:00 2001
***************
*** 235,241 ****
boolean has_streams = false;
if (!((ComFunc*)sv.obj_val())->post_eval())
for(int i=0; i<sv.narg()+sv.nkey(); i++) {
! if (!stack_top(-i).is_symbol())
has_streams = stack_top(-i).is_stream();
else {
AttributeValue* testval =
--- 235,241 ----
boolean has_streams = false;
if (!((ComFunc*)sv.obj_val())->post_eval())
for(int i=0; i<sv.narg()+sv.nkey(); i++) {
! if (!stack_top(-i).is_symbol() && !stack_top(-i).is_attribute())
has_streams = stack_top(-i).is_stream();
else {
AttributeValue* testval =
Index: ComTerp/comvalue.c
diff -c ComTerp/comvalue.c:1.6 ComTerp/comvalue.c:1.7
*** ComTerp/comvalue.c:1.6 Fri Oct 12 14:56:21 2001
--- src/ComTerp/comvalue.c Mon Oct 15 13:14:00 2001
***************
*** 263,286 ****
ALIterator i;
AttributeValueList* avl = svp->array_val();
avl->First(i);
! boolean first = true;
while (!avl->Done(i)) {
- if (first) {
- out << "{";
- first = false;
- }
ComValue val(*avl->GetAttrVal(i));
out << val;
avl->Next(i);
if (!avl->Done(i)) out << ",";
! }
! if (!first) out << "}";
} else {
out << "list of length " << svp->array_len();
ALIterator i;
AttributeValueList* avl = svp->array_val();
avl->First(i);
- boolean first = true;
while (!avl->Done(i)) {
out << "\n\t" << *avl->GetAttrVal(i);
avl->Next(i);
--- 263,281 ----
ALIterator i;
AttributeValueList* avl = svp->array_val();
avl->First(i);
! out << "{";
while (!avl->Done(i)) {
ComValue val(*avl->GetAttrVal(i));
out << val;
avl->Next(i);
if (!avl->Done(i)) out << ",";
! };
! out << "}";
} else {
out << "list of length " << svp->array_len();
ALIterator i;
AttributeValueList* avl = svp->array_val();
avl->First(i);
while (!avl->Done(i)) {
out << "\n\t" << *avl->GetAttrVal(i);
avl->Next(i);
*** /dev/null Mon Oct 15 13:14:17 PDT 2001
--- patches/ivtools-011015-johnston-076
*************** patches/ivtools-011015-johnston-076
*** 0 ****
--- 1 ----
+ ivtools-011015-johnston-076
|