summaryrefslogtreecommitdiff
path: root/app/bin/trknote.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/bin/trknote.c')
-rw-r--r--app/bin/trknote.c131
1 files changed, 66 insertions, 65 deletions
diff --git a/app/bin/trknote.c b/app/bin/trknote.c
index f27cf2e..f2462ba 100644
--- a/app/bin/trknote.c
+++ b/app/bin/trknote.c
@@ -20,31 +20,26 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#include <stdint.h>
-#include <string.h>
-#include <ctype.h>
-
+#include "common.h"
#include "cundo.h"
#include "custom.h"
#include "dynstring.h"
#include "fileio.h"
-#include "i18n.h"
#include "misc.h"
#include "note.h"
#include "param.h"
#include "track.h"
#include "include/utf8convert.h"
-#include "utility.h"
extern BOOL_T inDescribeCmd;
extern descData_t noteDesc[];
-static TRKTYP_T T_NOTE = -1;
+EXPORT TRKTYP_T T_NOTE = -1;
static wDrawBitMap_p note_bm, link_bm, document_bm;
typedef struct {
- char **xpm;
+ char ***xpm;
int OP;
char * shortName;
char * cmdName;
@@ -52,14 +47,14 @@ typedef struct {
long acclKey;
} trknoteData_t;
-#include "bitmaps/sticky-note-text.xpm"
-#include "bitmaps/sticky-note-chain.xpm"
-#include "bitmaps/sticky-note-clip.xpm"
+#include "bitmaps/sticky-note.xpm"
+#include "bitmaps/sticky-link.xpm"
+#include "bitmaps/sticky-doc.xpm"
static trknoteData_t noteTypes[] = {
- { sticky_note_text_bits, OP_NOTETEXT, N_("Note"), N_("Comment"), "cmdTextNote", 0L },
- { sticky_note_chain_bits, OP_NOTELINK, N_("Link"), N_("Weblink"), "cmdLinkNote", 0L },
- { sticky_note_clip_bits, OP_NOTEFILE, N_("Document"), N_("Document"), "cmdFileNote", 0L },
+ { sticky_note_xpm, OP_NOTETEXT, N_("Note"), N_("Comment"), "cmdTextNote", 0L },
+ { sticky_link_xpm, OP_NOTELINK, N_("Link"), N_("Weblink"), "cmdLinkNote", 0L },
+ { sticky_doc_xpm, OP_NOTEFILE, N_("Document"), N_("Document"), "cmdFileNote", 0L },
};
static long curNoteType;
@@ -67,7 +62,7 @@ static long curNoteType;
static unsigned layerSave;
static coOrd posSave;
-#define NOTETYPESCOUNT (sizeof(noteTypes)/sizeof(trknoteData_t))
+#define NOTETYPESCOUNT COUNT(noteTypes)
/*****************************************************************************
@@ -77,9 +72,9 @@ static coOrd posSave;
static track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command )
{
track_p t;
- struct extraDataNote * xx;
+ struct extraDataNote_t * xx;
t = NewTrack(index, T_NOTE, 0, sizeof *xx);
- xx = (struct extraDataNote *)GetTrkExtraData(t);
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
xx->pos = p;
xx->op = command;
SetBoundingBox(t, p, p);
@@ -96,26 +91,29 @@ static track_p NewNote(wIndex_t index, coOrd p, enum noteCommands command )
static void DrawNote(track_p t, drawCmd_p d, wDrawColor color)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(t);
- coOrd p[4];
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
+ coOrd p[5];
+ int type[5];
- if (d->scale >= 16) {
- return;
- }
- if ((d->options & DC_SIMPLE)) {
- //while the icon is moved, draw a square
+
+ if ((d->options & DC_SIMPLE) || mainD.scale >= 16) {
+ //while the icon is moved, draw a square with a lopped off corner
//because CmdMove draws all selected object into tempSeg and
//tempSegDrawFuncs doesn't have a BitMap drawing func
DIST_T dist;
- dist = 0.1*mainD.scale;
+ dist = 0.8 + 0.1*(mainD.scale-16)/4;
p[0].x = p[1].x = xx->pos.x - dist;
- p[2].x = p[3].x = xx->pos.x + dist;
+ p[2].x = p[3].x = p[4].x = xx->pos.x + dist;
p[1].y = p[2].y = xx->pos.y - dist;
- p[3].y = p[0].y = xx->pos.y + dist;
- DrawLine(d, p[0], p[1], 0, color);
- DrawLine(d, p[1], p[2], 0, color);
- DrawLine(d, p[2], p[3], 0, color);
- DrawLine(d, p[3], p[0], 0, color);
+ p[3].y = p[4].y = p[0].y = xx->pos.y + dist;
+ p[3].y = p[3].y - (dist/2);
+ p[4].x = p[4].x - (dist/2);
+
+ for (int i=0;i<5;i++) {
+ type[i] = 0;
+ }
+ DrawPoly(d, 5, p, type, color, 0, DRAW_CLOSED);
+ DrawPoly(d, 5, p, type, drawColorGold, 0, DRAW_FILL);
} else {
// draw a bitmap for static object
wDrawBitMap_p bm;
@@ -135,7 +133,7 @@ static void DrawNote(track_p t, drawCmd_p d, wDrawColor color)
static DIST_T DistanceNote(track_p t, coOrd * p)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(t);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
DIST_T d;
d = FindDistance(*p, xx->pos);
@@ -143,12 +141,12 @@ static DIST_T DistanceNote(track_p t, coOrd * p)
return d;
}
- return 100000.0;
+ return DIST_INF;
}
static void DeleteNote(track_p t)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(t);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
switch (xx->op) {
case OP_NOTETEXT:
@@ -180,7 +178,7 @@ static void DeleteNote(track_p t)
void
NoteStateSave(track_p trk)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
layerSave = GetTrkLayer(trk);
posSave = xx->pos;
}
@@ -193,7 +191,7 @@ void
CommonCancelNote(track_p trk)
{
if (inDescribeCmd) {
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
xx->layer = layerSave;
xx->pos = posSave;
SetBoundingBox(trk, xx->pos, xx->pos);
@@ -201,9 +199,9 @@ CommonCancelNote(track_p trk)
}
static void
-CommonUpdateNote(track_p trk, int inx, struct extraDataNote *noteData )
+CommonUpdateNote(track_p trk, int inx, struct extraDataNote_t *noteData )
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
switch (inx) {
case OR_NOTE:
@@ -220,10 +218,10 @@ CommonUpdateNote(track_p trk, int inx, struct extraDataNote *noteData )
}
-void UpdateFile(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart)
+void UpdateFile(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
{
track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
switch (inx) {
case OR_NOTE:
@@ -253,10 +251,10 @@ void UpdateFile(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart
}
}
-void UpdateLink(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart)
+void UpdateLink(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
{
track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
switch (inx) {
case OR_NOTE:
@@ -275,10 +273,10 @@ void UpdateLink(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart)
}
}
-void UpdateText(struct extraDataNote *noteUIData, int inx, BOOL_T needUndoStart)
+void UpdateText(struct extraDataNote_t *noteUIData, int inx, BOOL_T needUndoStart)
{
track_p trk = noteUIData->trk;
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
switch (inx) {
case OR_NOTE:
@@ -334,8 +332,9 @@ GetNoteMarker(enum noteCommands command )
static BOOL_T WriteNote(track_p t, FILE * f)
{
- struct extraDataNote *xx = (struct extraDataNote *)GetTrkExtraData(t);
+ struct extraDataNote_t *xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
BOOL_T rc = TRUE;
+ unsigned strings2convert = 1;
rc &= fprintf(f, "NOTE %d %u 0 0 %0.6f %0.6f 0 %d", GetTrkIndex(t),
GetTrkLayer(t),
@@ -349,16 +348,18 @@ static BOOL_T WriteNote(track_p t, FILE * f)
case OP_NOTELINK:
s[0]=ConvertToEscapedText( xx->noteData.linkData.url );
s[1]=ConvertToEscapedText( xx->noteData.linkData.title );
+ strings2convert = 2;
break;
case OP_NOTEFILE:
s[0]=ConvertToEscapedText( xx->noteData.fileData.path );
s[1]=ConvertToEscapedText( xx->noteData.fileData.title );
+ strings2convert = 2;
break;
default:
AbortProg( "WriteNote: %d", xx->op );
}
-#ifdef WINDOWS
- for ( int inx = 0; inx < 2; inx++ ) {
+#ifdef UTFCONVERT
+ for ( unsigned int inx = 0; inx < strings2convert; inx++ ) {
if ( RequiresConvToUTF8( s[inx] ) ) {
wSystemToUTF8 ( s[inx], message, sizeof message );
MyFree( s[inx] );
@@ -389,7 +390,7 @@ ReadTrackNote(char *line)
track_p t;
int size;
char * cp;
- struct extraDataNote *xx;
+ struct extraDataNote_t *xx;
wIndex_t index;
wIndex_t layer;
coOrd pos;
@@ -404,17 +405,17 @@ ReadTrackNote(char *line)
return FALSE;
}
- if ( paramVersion >= 12 ) {
+ if ( paramVersion >= VERSION_INLINENOTE ) {
noteType = size;
t = NewNote(index, pos, noteType);
SetTrkLayer(t, layer);
- xx = (struct extraDataNote *)GetTrkExtraData(t);
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
switch (noteType) {
case OP_NOTETEXT:
if ( !GetArgs( cp, "qc", &sText, &cp ) )
return FALSE;
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.text = sText;
@@ -422,13 +423,13 @@ ReadTrackNote(char *line)
case OP_NOTELINK:
if ( !GetArgs( cp, "qc", &sText, &cp ) )
return FALSE;
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.linkData.url = sText;
if ( !GetArgs( cp, "qc", &sText, &cp ) )
return FALSE;
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.linkData.title = sText;
@@ -436,13 +437,13 @@ ReadTrackNote(char *line)
case OP_NOTEFILE:
if ( !GetArgs( cp, "qc", &sText, &cp ) )
return FALSE;
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.fileData.path = sText;
if ( !GetArgs( cp, "qc", &sText, &cp ) )
return FALSE;
-#ifdef WINDOWS
+#ifdef UTFCONVERT
ConvertUTF8ToSystem( sText );
#endif
xx->noteData.fileData.title = sText;
@@ -467,7 +468,7 @@ ReadTrackNote(char *line)
t = NewNote(index, pos, noteType);
SetTrkLayer(t, layer);
- xx = (struct extraDataNote *)GetTrkExtraData(t);
+ xx = GET_EXTRA_DATA( t, T_NOTE, extraDataNote_t );
switch (noteType) {
case OP_NOTETEXT:
@@ -515,7 +516,7 @@ ReadNote(char * line)
static void MoveNote(track_p trk, coOrd orig)
{
- struct extraDataNote * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
xx->pos.x += orig.x;
xx->pos.y += orig.y;
SetBoundingBox(trk, xx->pos, xx->pos);
@@ -524,14 +525,14 @@ static void MoveNote(track_p trk, coOrd orig)
static void RotateNote(track_p trk, coOrd orig, ANGLE_T angle)
{
- struct extraDataNote * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
Rotate(&xx->pos, orig, angle);
SetBoundingBox(trk, xx->pos, xx->pos);
}
static void RescaleNote(track_p trk, FLOAT_T ratio)
{
- struct extraDataNote * xx = (struct extraDataNote *)GetTrkExtraData(trk);
+ struct extraDataNote_t * xx = GET_EXTRA_DATA( trk, T_NOTE, extraDataNote_t );
xx->pos.x *= ratio;
xx->pos.y *= ratio;
}
@@ -574,8 +575,8 @@ static BOOL_T QueryNote( track_p trk, int query )
static wBool_t CompareNote( track_cp trk1, track_cp trk2 )
{
- struct extraDataNote *xx1 = (struct extraDataNote *)GetTrkExtraData( trk1 );
- struct extraDataNote *xx2 = (struct extraDataNote *)GetTrkExtraData( trk2 );
+ struct extraDataNote_t *xx1 = GET_EXTRA_DATA( trk1, T_NOTE, extraDataNote_t );
+ struct extraDataNote_t *xx2 = GET_EXTRA_DATA( trk2, T_NOTE, extraDataNote_t );
char * cp = message + strlen(message);
REGRESS_CHECK_POS( "Pos", xx1, xx2, pos )
REGRESS_CHECK_INT( "Layer", xx1, xx2, layer )
@@ -636,7 +637,7 @@ static STATUS_T CmdNote(wAction_t action, coOrd pos)
switch (action) {
case C_START:
InfoMessage(_("Place a note on the layout"));
- curNoteType = (long)commandContext;
+ curNoteType = VP2L(commandContext);
return C_CONTINUE;
case C_DOWN:
@@ -697,7 +698,7 @@ static STATUS_T CmdNote(wAction_t action, coOrd pos)
#include "bitmaps/note.xbm"
#include "bitmaps/link.xbm"
#include "bitmaps/clip.xbm"
-#include "bitmaps/cnote.xpm"
+// RWS not used #include "bitmaps/note.xpm"
void InitTrkNote(wMenu_p menu)
{
@@ -711,8 +712,8 @@ void InitTrkNote(wMenu_p menu)
wIcon_p icon;
nt = noteTypes + i;
- icon = wIconCreatePixMap(nt->xpm);
- AddMenuButton(menu, CmdNote, nt->helpKey, _(nt->cmdName), icon, LEVEL0_50, IC_STICKY | IC_POPUP2, nt->acclKey, (void *)(intptr_t)nt->OP);
+ icon = wIconCreatePixMap(nt->xpm[iconSize]);
+ AddMenuButton(menu, CmdNote, nt->helpKey, _(nt->cmdName), icon, LEVEL0_50, IC_STICKY | IC_POPUP2, nt->acclKey, I2VP(nt->OP));
}
ButtonGroupEnd();