diff options
Diffstat (limited to 'app/bin/trknote.c')
-rw-r--r-- | app/bin/trknote.c | 131 |
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(); |