- Added search feature ('/' and 'n' keys)

- Bumped version to 1.7a
This commit is contained in:
Rob Pearce 2006-01-17 03:27:15 +00:00
parent 52bf862f07
commit ef16be4174
10 changed files with 1366 additions and 524 deletions

View File

@ -2,24 +2,53 @@ Ideas for future versions:
- Fix the bug where netmapr crashes on my 24-bit Truecolour display under - Fix the bug where netmapr crashes on my 24-bit Truecolour display under
Solaris (and possibly other platforms) Solaris (and possibly other platforms)
- Perhaps change to SVG for objects - Perhaps change to SVG for objects
- Add more objects:
House
Phone Version 1.6:
- Traffic flows are now always drawn last - this should speed up diagram
creation by avoiding lots of object draw order adjustments.
- Endpoints on arrowheads are now only adjusted to be outside objects
when the link is NOT a traffic flow - ie. traffic flows can terminate
INSIDE objects as opposed to next to them.
- Newly created links are now placed one place below their start/end objects
in the "thing" stack, rather than always at the very bottom.
- Added { / } commands (or shift+mouse wheel) to raise/lower map items by
a large amount at once (10% of total number of items) rather than one
position at a time.
- Added new object: Phone
- Status bar modifications:
- Added more statusbar text feedback for common actions
- Status bar now flashes red when errors are displayed.
- Status bar now flashes green when important information is displayed.
- Bug Fixes:
- Fixed yet another bug with AP_END arrowheads being drawn
underneath objects.
- Fixed bug where changing the colour of a line/text object
would remove the ISFLOW attribute.
- Fixed a number of bugs and graphical glitches with the "shadow" when
moving or resizing things.
Version 1.5: Version 1.5:
- Now handles spaces in filenames under Windows - Can now export to SVG files (save with ".SVG" extension)
- Disabled Delete Map and New Map functions in readonly mode - Modifications to allow SVG exports:
- Preparation for SVG exports:
- Added vector types: Subobj/obj (to draw filled objects), Poly - Added vector types: Subobj/obj (to draw filled objects), Poly
- Modified vector type "box" to take a "fill colour" argument - Modified vector type "box" to take a "fill colour" argument
- Removed vector types Fill and Fillbox - Removed vector types Fill and Fillbox
- Fix bug where traffic flows could be selected without flow mode being on
- Added new objects: House, Building, IDS Sensor
- Better handling for spaces in filenames under Windows
- Delete Map and New Map functions are now disabled in readonly mode
- Rewrote entire objects.dat file to avoid use of "fill" command - Rewrote entire objects.dat file to avoid use of "fill" command
- Can now export to SVG files (same with ".SVG" extension) - Many improvements to mapbox:
- Current map name is now centred and highlighted
- Long map names are now displayed with "..." if they won't fit
- Map names are now sorted
- Improved behaviour of grid with respect to link endpoints when - Improved behaviour of grid with respect to link endpoints when
moving & resizing objects moving & resizing objects
- Grid lines now look more visio-like - Modifications to grid settings:
- Removed grid size of '5' as this was too small to be useful - Grid lines now look more visio-like and are now always visible
- Changed default grid size from 10 to 15. - Removed grid size of '5' as this was too small to be useful
- Changed default grid size from 10 to 15.
Version 1.4: Version 1.4:
- Rewrote Command Reference document (simplified and now includes screenshots) - Rewrote Command Reference document (simplified and now includes screenshots)

View File

@ -1,63 +1,71 @@
#define VERSION "1.5" #define VERSION "1.7a"
#define SMALLBUFLEN 64 /* variable sizes */
#define BUFLEN 512 #define SMALLBUFLEN 64 /* small text buffer */
#define BUFLEN 512 /* large text buffer */
#define DOUBLECLICKTHRES 250 /* user interface settings elements */
#define DOUBLECLICKTHRES 250 /* how fast a double click needs to be (in ticks) */
#define CURSORWIDTH 6 /* width of text cursor */
#define FIRSTLET 33 /* first ASCII value for letters */
#define LASTLET 122 /* last ASCII value for letters */
#define OBOXPAGESIZE (4) /* how many lines a pageup/down will scroll the object box */
#define MULTIRAISENUM (10) /* this many presses of { or } will raise/lower a thing to the very bottom/top */
#define LINESELTHRESHOLD (4) /* how close to a link you need to click to select it */
#define DEFTEXTW 8 /* graphical elements */
#define DEFTEXTH 10 #define SHORTCUTSIZE (10) /* font size (points) for shortcut numbers on buttons */
#define BEZIERQUALITY 50 /* how many sub=lines to use when drawing bezier curves */
#define MAPBOXTEXTHEIGHT 10 /* size of text in mapbox (points) */
#define LINESELHANDLESIZE (5) /* how large the boxes on the ends of a selected link are */
#define OBJSELHANDLEPCT (15) /* what percentage of the selected object's size the selection boxes are */
#define SIDEBARW 100 /* how width the toolbox/mapbox/objectbox are */
#define ERRORFLASHSPEED 5 /* how fast to fade out the statusbar error highlight */
#define INFOFLASHSPEED 2 /* how fast to fade out the statusbar information highlight */
#define MAXPOINTS 20 /* defaults */
#define MAXBUTTONS 40 #define DEFTEXTW 8 /* default text width (in pixels) for new text items */
#define DEFTEXTH 10 /* default text height (in POINTS) for new text items */
#define MAXMAPS 60 /* maximum/minimum values */
#define MAXBUTTONS 18 /* maximum number of toolbox buttons from buttons.dat */
#define MAXOBJTYPES 50 /* maximum amount of different types from objects.dat */
#define MAXHISTORY 50 #define MAXCHILDREN 30 /* maximum amount of submaps for any one given map */
#define MAXCHILDREN 30 #define MAXHISTORY 50 /* maximum amount that we can drill down into a map */
#define MAXLINKS 512 /* maximum number of links between objects each map can contain */
#define MAXMAPS 60 /* maximum number of (sub)maps in a project */
#define MAXOBJECTS 512 /* maximum number of objects each map can contain */
#define MAXPOINTS 20 /* maximum number of points on a line */
#define MAXTEXT 512 /* maximum number of text objects per map */
#define MAXOBJTYPES 30 #define MINLETTERWIDTH 6 /* minimum letter width (pixels) */
#define MAXOBJECTS 512 #define MINLETTERHEIGHT 6 /* minimum letter width (points) */
#define MAXLINKS 512 #define MAXLETTERWIDTH 100 /* maximum letter width (pixels) */
#define MAXLETTERVECTS 95 #define MAXLETTERHEIGHT 100 /* maximum letter width (points) */
#define MAXTEXT 512
#define CURSORWIDTH 6 #define MAXOBJWIDTH 500 /* maximum object width */
#define MAXOBJHEIGHT 500 /* maximum object height */
#define MINOBJWIDTH 20 /* minimum object width */
#define MINOBJHEIGHT 20 /* minimum object height */
#define FIRSTLET 33 #define MAXFILLSTACK 500000 /* used for flood fill function */
#define LASTLET 122
#define MINLETTERWIDTH 6 #define OLDMAXVECTORSPERIMAGE (60) /* maximum vectors per image in old version map files */
#define MINLETTERHEIGHT 6 #define MAXVECTORSPERIMAGE (120) /* maximum vectors per image in current map files */
#define MAXLETTERWIDTH 100
#define MAXLETTERHEIGHT 100
#define MAXOBJWIDTH 300 #define MAXLINESTYLE (4) /* Types of lines (dotted, dashed, etc) */
#define MAXOBJHEIGHT 300 #define LINESTYLESIZE (10) /* How big each line style array is */
#define MINOBJWIDTH 20
#define MINOBJHEIGHT 20
#define MAPBOXTEXTHEIGHT 10
#define MAXFILLSTACK 500000
#define BEZIERQUALITY 50
#define SHORTCUTSIZE (10)
#define OLDMAXVECTORSPERIMAGE (60)
#define MAXVECTORSPERIMAGE (120)
#define LINESELTHRESHOLD (4)
#define LINESELHANDLESIZE (5)
#define OBJSELHANDLEPCT (15)
/*************************************
* Constants
*/
/* The SDL_Color.unused item is ORed with the following */
#define USECOLOUR (0x01) /* used as a NULL value for colours */ #define USECOLOUR (0x01) /* used as a NULL value for colours */
#define ISFLOW (0x02) /* used to show whether things are traffic flows */ #define ISFLOW (0x02) /* used to show whether things are traffic flows */
#define GRIDBRIGHTNESS 100 /* map element ("thing") types */
#define T_EMPTY (0) #define T_EMPTY (0)
#define T_OBJECT (1) #define T_OBJECT (1)
#define T_LINK (2) #define T_LINK (2)
@ -65,12 +73,7 @@
#define T_LINKPOINT (4) #define T_LINKPOINT (4)
#define T_MAP (5) #define T_MAP (5)
#define O_ROUTER (0) /* vector types */
#define O_SWITCH (1)
#define O_FIREWALL (2)
#define O_SERVER (3)
#define O_PC (4)
#define VT_LINE (0) #define VT_LINE (0)
#define VT_BOX (1) #define VT_BOX (1)
#define VT_DOT (2) #define VT_DOT (2)
@ -81,9 +84,11 @@
#define VT_ENDPOLY (7) #define VT_ENDPOLY (7)
#define VT_SUBOBJ (8) #define VT_SUBOBJ (8)
/* boolean flags */
#define TRUE (-1) #define TRUE (-1)
#define FALSE (0) #define FALSE (0)
/* states */
#define S_NONE (0) #define S_NONE (0)
#define S_OBJMOVING (1) #define S_OBJMOVING (1)
#define S_RESIZING (2) #define S_RESIZING (2)
@ -110,8 +115,9 @@
#define S_EDITTEXT (23) #define S_EDITTEXT (23)
#define S_CHANGEOBJECT (24) #define S_CHANGEOBJECT (24)
#define S_DRAWFLOW (25) #define S_DRAWFLOW (25)
#define S_SEARCH (26)
/* toolbox buttons */
#define TB_POINTER (0) #define TB_POINTER (0)
#define TB_ADDOBJ (1) #define TB_ADDOBJ (1)
#define TB_ADDTEXT (2) #define TB_ADDTEXT (2)
@ -131,27 +137,22 @@
#define TB_LOAD (16) #define TB_LOAD (16)
#define TB_SAVE (17) #define TB_SAVE (17)
#define SIDEBARW 100
#define NUMSTYLES (7)
/* selection screen values */
#define YES (1) #define YES (1)
#define NO (0) #define NO (0)
#define MAYBE (-1) #define MAYBE (-1)
/* line styles etc */ /* Line styles are a 32-bit int split up as follows: */
/* /*
* Unused Arrow Style Thickness (max 5?) * Unused Arrow Style Thickness (max 5?)
* 00000000 00000000 00000000 00000000 * 00000000 00000000 00000000 00000000
*/ */
#define LS_SOLID (0) #define LS_SOLID (0)
#define LS_DOTTED (1) #define LS_DOTTED (1)
#define LS_BIGDASH (2) #define LS_BIGDASH (2)
#define LS_DASHDOT (3) #define LS_DASHDOT (3)
#define MAXLINESTYLE (4)
#define LINESTYLESIZE (10)
/* arrow positions */ /* arrow positions */
#define AP_NONE (0) #define AP_NONE (0)
@ -159,14 +160,14 @@
#define AP_END (2) #define AP_END (2)
#define AP_BOTH (3) #define AP_BOTH (3)
/* Special mapbox child values for scroll buttons */
#define C_NONE (-1) #define C_NONE (-1)
#define C_SCROLLUP (-2) #define C_SCROLLUP (-2)
#define C_SCROLLDOWN (-3) #define C_SCROLLDOWN (-3)
/* mouse positions */ /* Mouse positions */
#define MP_NONE (0) #define MP_NONE (0)
#define MP_TOOLBOX (1) #define MP_TOOLBOX (1)
#define MP_MAPBOXNAME (2) #define MP_MAPBOXNAME (2)
#define MP_MAPBOXCHILDREN (3) #define MP_MAPBOXCHILDREN (3)
#define MP_OBJECTBOX (4) #define MP_OBJECTBOX (4)

View File

@ -214,7 +214,7 @@
</tr> </tr>
<tr> <tr>
<td rowspan=3><center><img src="objbox.jpg" alt="Object Box"></center></td> <td rowspan=4><center><img src="objbox.jpg" alt="Object Box"></center></td>
<td>Left mouse button</td> <td>Left mouse button</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>Select new object type.</td> <td>Select new object type.</td>
@ -223,7 +223,13 @@
<tr> <tr>
<td>Mouse Wheel</td> <td>Mouse Wheel</td>
<td>'q' and 'w' keys<br>',' and '.' keys</td> <td>'q' and 'w' keys<br>',' and '.' keys</td>
<td>Scroll the object selection box up and down.</td> <td>Scroll the object selection box up/down by one line.</td>
</tr>
<tr>
<td>SHIFT + Mouse Wheel</td>
<td>PgUp and PgDown Keys</td>
<td>Scroll the object selection box up/down by one page.</td>
</tr> </tr>
<tr> <tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

1572
netmapr.c

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -89,10 +89,11 @@ typedef struct {
} object_t; } object_t;
struct {
vectorimg_t vect; //struct {
char name; // vectorimg_t vect;
} letter[MAXLETTERVECTS]; // char name;
//} letter[MAXLETTERVECTS];
typedef struct { typedef struct {
int id; int id;
@ -167,6 +168,8 @@ map_t map[MAXMAPS];
char typedesc[6][BUFLEN]; char typedesc[6][BUFLEN];
void adjustendpoint(SDL_Surface *screen, int *adjx, int *adjy, double x1, double y1, double x2, double y2, int arrowstyle, int arrowpos );
void addlinkpoint(int linkid, int x, int y); void addlinkpoint(int linkid, int x, int y);
int addvector(vectorimg_t *vimg, int type, int x1, int y1, int x2, int y2, SDL_Color *c, SDL_Color *fc); int addvector(vectorimg_t *vimg, int type, int x1, int y1, int x2, int y2, SDL_Color *c, SDL_Color *fc);
void changegridsize(void); void changegridsize(void);
@ -183,7 +186,10 @@ void deletething(int id, int type);
void deletelink(int linkid); void deletelink(int linkid);
void deleteobject(int oid ); void deleteobject(int oid );
void deletetext(int textid); void deletetext(int textid);
int dosearch(void);
int dosearchnext(void);
void drawarrowhead(SDL_Surface *screen, double x1, double y1, double x2, double y2, SDL_Color c, int arrowstyle, int arrowpos); void drawarrowhead(SDL_Surface *screen, double x1, double y1, double x2, double y2, SDL_Color c, int arrowstyle, int arrowpos);
void drawarrowheadSVG(double x1, double y1, double x2, double y2, SDL_Color c, int arrowstyle, int arrowpos);
void lerp(int *newx, int *newy, int ax, int ay, int bx, int by, float t); void lerp(int *newx, int *newy, int ax, int ay, int bx, int by, float t);
void drawbezier(SDL_Surface *screen, int x1, int y1, int x2,int y2, int x3,int y3, int x4,int y4, SDL_Color c); void drawbezier(SDL_Surface *screen, int x1, int y1, int x2,int y2, int x3,int y3, int x4,int y4, SDL_Color c);
void drawbox(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c, SDL_Color *fc); void drawbox(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c, SDL_Color *fc);
@ -192,7 +198,6 @@ void drawellipse(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color
void drawflowbox(SDL_Surface *dest, int oid, int otype); void drawflowbox(SDL_Surface *dest, int oid, int otype);
void drawcolorchart(SDL_Surface *dest); void drawcolorchart(SDL_Surface *dest);
void drawmaplist(SDL_Surface *dest); void drawmaplist(SDL_Surface *dest);
int drawletter(SDL_Surface *dest,int x, int y, int w, int h, char let, SDL_Color col);
void drawline(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c, int linestyle); void drawline(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c, int linestyle);
void drawlinebehind(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c); void drawlinebehind(SDL_Surface *screen, int x1, int y1, int x2, int y2, SDL_Color c);
void drawlink(SDL_Surface *dest, link_t *l); void drawlink(SDL_Surface *dest, link_t *l);
@ -239,7 +244,7 @@ void goback(void);
int linelen(int x1,int y1,int x2,int y2); int linelen(int x1,int y1,int x2,int y2);
int linkat(int x, int y); int linkat(int x, int y);
int loadmap(void); int loadmap(void);
void lowerselected(void); void lowerselected(int amt);
int objat(int x, int y); int objat(int x, int y);
void paste(void); void paste(void);
void pasteline(SDL_Surface *screen, int *lbuf); void pasteline(SDL_Surface *screen, int *lbuf);
@ -248,6 +253,7 @@ void push(int x, int y);
int initgraphics(void); int initgraphics(void);
void initmap(int mapnum); void initmap(int mapnum);
int initobject(int onum); int initobject(int onum);
int isinhistory(int mapid);
int isflow(int oid, int otype); int isflow(int oid, int otype);
int isonline (int fx, int fy, int x1, int y1, int x2, int y2); int isonline (int fx, int fy, int x1, int y1, int x2, int y2);
int isonlink(int linkid, int mx, int my); int isonlink(int linkid, int mx, int my);
@ -262,7 +268,9 @@ int isonmapboxchildren (int x, int y);
int isonmapname (int x, int y); int isonmapname (int x, int y);
int isongoback (int x, int y); int isongoback (int x, int y);
void initvars(void); void initvars(void);
void raiseselected(void); void raiseselected(int amt);
void seterror(int errnum);
void setinfo(int infonum);
void setmod(int tf); void setmod(int tf);
int savemap(void); int savemap(void);
void scrollobox(int amt); void scrollobox(int amt);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 149 KiB

View File

@ -488,3 +488,117 @@ line 165 75 180 70 0 0 0
# right wing # right wing
poly 0 0 0 p 278 35 283 45 183 80 173 60 273 25 278 35 f 0 110 148 poly 0 0 0 p 278 35 283 45 183 80 173 60 273 25 278 35 f 0 110 148
end end
object house 200 200
# roof
poly 0 0 0 p 0 100 100 0 199 100 0 100 f 200 0 0
# base
box 25 100 175 199 0 0 0 255 146 143
# door
box 60 125 100 199 0 0 0 173 97 0
# window
box 115 115 160 150 0 0 0 0 0 255
line 137 115 137 150 0 0 0
line 115 132 160 132 0 0 0
# chimney
box 137 25 150 60 210 0 0 210 0 0
line 137 60 137 25 0 0 0
line 137 25 150 25 0 0 0
line 150 25 150 60 0 0 0
# chimney top
box 134 20 153 25 0 0 0 173 97 0
end
object building 150 200
# front
box 0 25 102 199 240 240 240 150 150 150
# side
poly 240 240 240 p 102 25 149 0 149 175 102 199 102 25 f 90 90 90
# top
poly 240 240 240 p 0 25 47 0 149 0 102 25 0 25 f 200 200 200
# windows - top row
box 14 40 24 50 0 0 0 0 0 255
box 30 40 40 50 0 0 0 0 0 255
box 46 40 56 50 0 0 0 0 0 255
box 62 40 72 50 0 0 0 0 0 255
box 78 40 88 50 0 0 0 0 0 255
# windows - top row
box 14 56 24 66 0 0 0 0 0 255
box 30 56 40 66 0 0 0 0 0 255
box 46 56 56 66 0 0 0 0 0 255
box 62 56 72 66 0 0 0 0 0 255
box 78 56 88 66 0 0 0 0 0 255
# windows - top row
box 14 72 24 82 0 0 0 0 0 255
box 30 72 40 82 0 0 0 0 0 255
box 46 72 56 82 0 0 0 0 0 255
box 62 72 72 82 0 0 0 0 0 255
box 78 72 88 82 0 0 0 0 0 255
# windows - top row
box 14 88 24 98 0 0 0 0 0 255
box 30 88 40 98 0 0 0 0 0 255
box 46 88 56 98 0 0 0 0 0 255
box 62 88 72 98 0 0 0 0 0 255
box 78 88 88 98 0 0 0 0 0 255
# windows - top row
box 14 104 24 114 0 0 0 0 0 255
box 30 104 40 114 0 0 0 0 0 255
box 46 104 56 114 0 0 0 0 0 255
box 62 104 72 114 0 0 0 0 0 255
box 78 104 88 114 0 0 0 0 0 255
# windows - top row
box 14 120 24 130 0 0 0 0 0 255
box 30 120 40 130 0 0 0 0 0 255
box 46 120 56 130 0 0 0 0 0 255
box 62 120 72 130 0 0 0 0 0 255
box 78 120 88 130 0 0 0 0 0 255
# door
box 20 175 30 199 240 240 240 200 200 200
box 30 175 40 199 240 240 240 200 200 200
# door outline
line 30 176 30 198 150 150 150
end
object ids-sensor 300 200
# front
box 0 25 275 199 170 230 255 0 150 213
# top
poly 170 230 255 p 0 25 25 0 299 0 275 25 0 25 f 0 180 255
# side
poly 170 230 255 p 275 25 299 0 299 175 275 199 275 25 f 0 90 128
# circle
subobj 250 250 250
circle 137 110 80 60 20 20 20
endsub
# inner
subobj 0 150 213
circle 137 110 65 45 20 20 20
endsub
# top arrow
poly 0 0 0 p 15 75 235 75 , 235 65 , 260 80 , 235 95 , 235 85 15 85 , 15 75 f 250 250 250
# bottom arrow
poly 0 0 0 p 260 125 40 125 , 40 115 , 15 130 , 40 145 , 40 135 260 135 , 260 125 f 250 250 250
end
object phone 200 145
# base
poly 0 0 0 p 25 95 , 25 144 , 175 144 , 175 95 , 135 35 , 65 35 , 25 95 f 0 90 128
box 65 20 75 35 0 0 0 0 150 203
box 125 20 135 35 0 0 0 0 150 203
# handset ends
box 0 50 40 70 0 0 0 0 180 255
box 160 50 199 70 0 0 0 0 180 255
# handset
# left end
poly 0 0 0 p 10 50 , 10 10 , 20 0 , 30 0 , 30 50 , 10 50 f 0 150 203
# right end
poly 0 0 0 p 190 50 , 190 10 , 180 0 , 170 0 , 170 50 , 190 50 f 0 150 203
# top bit
box 30 0 170 20 0 0 0 0 150 203
# fixups
line 30 1 30 19 0 150 203
line 170 1 170 19 0 150 203
# dial
subobj 0 180 255 0 0
circle 100 85 40 40 0 0 0
endsub
subobj 0 90 128
circle 100 85 25 25 0 0 0
endsub
end

View File

@ -9,3 +9,5 @@ WINFILE=${FULLNAME}-win32.zip
mkdir ${FULLNAME} mkdir ${FULLNAME}
cp README.txt INSTALL.txt objects.dat buttons.dat netmapr.exe netmapr.c netmapr.h constants.h convert.c convert.h verdana.ttf example.map icon.bmp windows_files/*.dll ${FULLNAME}/ cp README.txt INSTALL.txt objects.dat buttons.dat netmapr.exe netmapr.c netmapr.h constants.h convert.c convert.h verdana.ttf example.map icon.bmp windows_files/*.dll ${FULLNAME}/
cp -R doc ${FULLNAME}/ cp -R doc ${FULLNAME}/
zip -r ${WINFILE} ${FULLNAME}