// fixed length types
-typedef char signed wxInt8;
-typedef char unsigned wxUint8;
+#define wxInt8 char signed
+#define wxUint8 char unsigned
#ifdef __WIN16__
-typedef int signed wxInt16;
-typedef int unsigned wxUint16;
-typedef long signed wxInt32;
-typedef long unsigned wxUint32;
+#define wxInt16 int signed
+#define wxUint16 int unsigned
+#define wxInt32 long signed
+#define wxUint32 long unsigned
#endif
#ifdef __WIN32__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXMAC__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#ifdef __WXOS2__
-typedef short signed wxInt16;
-typedef short unsigned wxUint16;
-typedef int signed wxInt32;
-typedef int unsigned wxUint32;
+#define wxInt16 short signed
+#define wxUint16 short unsigned
+#define wxInt32 int signed
+#define wxUint32 int unsigned
#endif
#if !defined(__WXMSW__) && !defined(__WXMAC__) && !defined(__WXOS2__)
#if defined(SIZEOF_INT)
/* well, this shouldn't happen... */
- typedef short signed wxInt16;
- typedef short unsigned wxUint16;
- typedef int signed wxInt32;
- typedef int unsigned wxUint32;
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#else
- typedef short signed wxInt16;
- typedef short unsigned wxUint16;
- typedef int signed wxInt32;
- typedef int unsigned wxUint32;
+ #define wxInt16 short signed
+ #define wxUint16 short unsigned
+ #define wxInt32 int signed
+ #define wxUint32 int unsigned
#endif
#endif
-typedef wxUint8 wxByte;
-typedef wxUint16 wxWord;
+#define wxByte wxUint8
+#define wxWord wxUint16
// byte sex
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
+#include "wx/txtstrm.h"
#if !wxUSE_DOC_VIEW_ARCHITECTURE
#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
doodleSegments.DeleteContents(TRUE);
}
+#if wxUSE_STD_IOSTREAM
ostream& DrawingDocument::SaveObject(ostream& stream)
{
wxDocument::SaveObject(stream);
}
return stream;
}
+#else
+bool DrawingDocument::SaveObject(wxOutputStream &stream)
+{
+ wxDocument::SaveObject(stream);
+
+ wxTextOutputStream text_stream( stream );
+ wxInt32 n = doodleSegments.Number();
+ text_stream << n << "\n";
+
+ wxNode *node = doodleSegments.First();
+ while (node)
+ {
+ DoodleSegment *segment = (DoodleSegment *)node->Data();
+ segment->SaveObject(stream);
+ text_stream << "\n";
+
+ node = node->Next();
+ }
+ return TRUE;
+}
+#endif
+
+#if wxUSE_STD_IOSTREAM
istream& DrawingDocument::LoadObject(istream& stream)
{
wxDocument::LoadObject(stream);
return stream;
}
+#else
+bool DrawingDocument::LoadObject(wxInputStream& stream)
+{
+ wxDocument::LoadObject(stream);
+
+ wxTextInputStream text_stream( stream );
+
+ wxInt32 n = 0;
+ text_stream >> n;
+
+ for (int i = 0; i < n; i++)
+ {
+ DoodleSegment *segment = new DoodleSegment;
+ segment->LoadObject(stream);
+ doodleSegments.Append(segment);
+ }
+
+ return TRUE;
+}
+#endif
DoodleSegment::DoodleSegment(void)
{
lines.DeleteContents(TRUE);
}
+#if wxUSE_STD_IOSTREAM
ostream& DoodleSegment::SaveObject(ostream& stream)
{
stream << lines.Number() << '\n';
}
return stream;
}
+#else
+bool DoodleSegment::SaveObject(wxOutputStream& stream)
+{
+ wxTextOutputStream text_stream( stream );
+
+ wxInt32 n = lines.Number();
+ text_stream << n << "\n";
+
+ wxNode *node = lines.First();
+ while (node)
+ {
+ DoodleLine *line = (DoodleLine *)node->Data();
+ text_stream << line->x1 << " " <<
+ line->y1 << " " <<
+ line->x2 << " " <<
+ line->y2 << "\n";
+ node = node->Next();
+ }
+ return TRUE;
+}
+#endif
+#if wxUSE_STD_IOSTREAM
istream& DoodleSegment::LoadObject(istream& stream)
{
int n = 0;
}
return stream;
}
+#else
+bool DoodleSegment::LoadObject(wxInputStream& stream)
+{
+ wxTextInputStream text_stream( stream );
+
+ wxInt32 n = 0;
+ text_stream >> n;
+
+ for (int i = 0; i < n; i++)
+ {
+ DoodleLine *line = new DoodleLine;
+ text_stream >> line->x1 >>
+ line->y1 >>
+ line->x2 >>
+ line->y2;
+ lines.Append(line);
+ }
+ return TRUE;
+}
+#endif
void DoodleSegment::Draw(wxDC *dc)
{
class DoodleLine: public wxObject
{
public:
- long x1;
- long y1;
- long x2;
- long y2;
+ wxInt32 x1;
+ wxInt32 y1;
+ wxInt32 x2;
+ wxInt32 y2;
};
// Contains a list of lines: represents a mouse-down doodle
~DoodleSegment(void);
void Draw(wxDC *dc);
+#if wxUSE_STD_IOSTREAM
ostream& SaveObject(ostream& stream);
istream& LoadObject(istream& stream);
+#else
+ bool SaveObject(wxOutputStream& stream);
+ bool LoadObject(wxInputStream& stream);
+#endif
+
};
class DrawingDocument: public wxDocument
DrawingDocument(void);
~DrawingDocument(void);
+#if wxUSE_STD_IOSTREAM
ostream& SaveObject(ostream& stream);
istream& LoadObject(istream& stream);
+#else
+ bool SaveObject(wxOutputStream& stream);
+ bool LoadObject(wxInputStream& stream);
+#endif
inline wxList& GetDoodleSegments(void) const { return (wxList&) doodleSegments; };
};
if (store.fail() || store.bad())
#else
wxFileOutputStream store(file.fn_str());
- if (store.LastError() == 0)
+ if (store.LastError() != 0)
#endif
{
(void)wxMessageBox(_("Sorry, could not open this file for saving."), msgTitle, wxOK | wxICON_EXCLAMATION,
if (store.fail() || store.bad())
#else
wxFileInputStream store(file.fn_str());
- if (store.LastError() == 0)
+ if (store.LastError() != 0)
#endif
{
(void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION,