# pragma implementation "wxlparser.h"
#endif
-//#include "Mpch.h"
+#include "Mpch.h"
#ifdef M_PREFIX
# include "gui/wxllist.h"
# include "gui/wxlparser.h"
// in addition to Unix EOL convention we also (but not instead) understand
// the DOS one under Windows
return
- ((mode & WXLO_EXPORT_WITH_MASK) == WXLO_EXPORT_WITH_CRLF) ?
+ (mode == WXLO_EXPORT_WITH_CRLF) ?
((*p == '\r') && (*(p + 1) == '\n'))
:
(((*p == '\r') && (*(p + 1) == '\n'))||(*p == '\n'));
void wxLayoutImportText(wxLayoutList *list, wxString const &str, int withflag)
{
+ if(str.Length() == 0)
+ return;
char * cptr = (char *)str.c_str(); // string gets changed only temporarily
const char * begin = cptr;
char backup;
static char buffer[20];
wxString html;
- wxLayoutStyleInfo si;
- cmd.GetStyle(&si);
+ wxLayoutStyleInfo *si = cmd.GetStyle();
int size, sizecount;
html += "<font ";
- html +="color=";
- sprintf(buffer,"\"#%02X%02X%02X\"", si.fg_red,si.fg_green,si.fg_blue);
- html += buffer;
-
-
- html += " bgcolor=";
- sprintf(buffer,"\"#%02X%02X%02X\"", si.bg_red,si.bg_green,si.bg_blue);
- html += buffer;
+ if(si->m_fg_valid)
+ {
+ html +="color=";
+ sprintf(buffer,"\"#%02X%02X%02X\"", si->m_fg.Red(),si->m_fg.Green(),si->m_fg.Blue());
+ html += buffer;
+ }
- switch(si.family)
+ if(si->m_bg_valid)
+ {
+ html += " bgcolor=";
+ sprintf(buffer,"\"#%02X%02X%02X\"", si->m_bg.Red(),si->m_bg.Green(),si->m_bg.Blue());
+ html += buffer;
+ }
+
+ switch(si->family)
{
case wxSWISS:
case wxMODERN:
}
size = BASE_SIZE; sizecount = 0;
- while(size < si.size && sizecount < 5)
+ while(size < si->size && sizecount < 5)
{
sizecount ++;
size = (size*12)/10;
}
- while(size > si.size && sizecount > -5)
+ while(size > si->size && sizecount > -5)
{
sizecount --;
size = (size*10)/12;
if(styleInfo != NULL)
html ="</font>"+html; // terminate any previous font command
- if((si.weight == wxBOLD) && ( (!styleInfo) || (styleInfo->weight != wxBOLD)))
+ if((si->weight == wxBOLD) && ( (!styleInfo) || (styleInfo->weight != wxBOLD)))
html += "<b>";
else
- if(si.weight != wxBOLD && ( styleInfo && (styleInfo->weight == wxBOLD)))
+ if(si->weight != wxBOLD && ( styleInfo && (styleInfo->weight == wxBOLD)))
html += "</b>";
- if(si.style == wxSLANT)
- si.style = wxITALIC; // the same for html
+ if(si->style == wxSLANT)
+ si->style = wxITALIC; // the same for html
- if((si.style == wxITALIC) && ( (!styleInfo) || (styleInfo->style != wxITALIC)))
+ if((si->style == wxITALIC) && ( (!styleInfo) || (styleInfo->style != wxITALIC)))
html += "<i>";
else
- if(si.style != wxITALIC && ( styleInfo && (styleInfo->style == wxITALIC)))
+ if(si->style != wxITALIC && ( styleInfo && (styleInfo->style == wxITALIC)))
html += "</i>";
- if(si.underline && ( (!styleInfo) || ! styleInfo->underline))
+ if(si->underline && ( (!styleInfo) || ! styleInfo->underline))
html += "<u>";
- else if(si.underline == false && ( styleInfo && styleInfo->underline))
+ else if(si->underline == false && ( styleInfo && styleInfo->underline))
html += "</u>";
- *styleInfo = si; // update last style info
+ *styleInfo = *si; // update last style info
return html;
}
+wxLayoutExportStatus::wxLayoutExportStatus(wxLayoutList *list)
+{
+ m_si = *list->GetDefaults();
+ m_line = list->GetFirstLine();
+ m_iterator = m_line->GetFirstObject();
+}
+
+
+
#define WXLO_IS_TEXT(type) \
( type == WXLO_TYPE_TEXT \
|| (type == WXLO_TYPE_CMD \
- && (mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_HTML))
+ && mode == WXLO_EXPORT_AS_HTML))
-
wxLayoutExportObject *wxLayoutExport(wxLayoutExportStatus *status,
- int mode)
+ int mode, int flags)
{
wxASSERT(status);
wxLayoutExportObject * export;
if(status->m_iterator == NULLIT) // end of line
{
- if(!status->m_line || status->m_line->GetNextLine() == NULL) // reached end of list
+ if(!status->m_line || status->m_line->GetNextLine() == NULL)
+ // reached end of list
return NULL;
- else
+ }
+ export = new wxLayoutExportObject();
+ wxLayoutObjectType type;
+ if(status->m_iterator != NULLIT)
+ {
+ type = (** status->m_iterator).GetType();
+ if( mode == WXLO_EXPORT_AS_OBJECTS || ! WXLO_IS_TEXT(type)) // simple case
{
- status->m_line = status->m_line->GetNextLine();
- status->m_iterator = status->m_line->GetFirstObject();
- export = new wxLayoutExportObject();;
- if( (mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_OBJECTS) // simple case
- {
- export->type = WXLO_EXPORT_OBJECT;
- export->content.object = *status->m_iterator;
- status->m_iterator++;
- return export;
- }
- //else: text object:
- export->type = ((mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_HTML)
- ? WXLO_EXPORT_HTML : WXLO_EXPORT_TEXT;
- if((mode & WXLO_EXPORT_WITH_CRLF) == WXLO_EXPORT_WITH_CRLF)
- export->content.text = new wxString("\r\n");
- else
- export->content.text = new wxString("\n");
+ export->type = WXLO_EXPORT_OBJECT;
+ export->content.object = *status->m_iterator;
+ status->m_iterator++;
return export;
}
}
-
- export = new wxLayoutExportObject();
- wxLayoutObjectType type = (** status->m_iterator).GetType();
- if( (mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_OBJECTS || ! WXLO_IS_TEXT(type)) // simple case
- {
- export->type = WXLO_EXPORT_OBJECT;
- export->content.object = *status->m_iterator;
- status->m_iterator++;
- return export;
+ else
+ { // iterator == NULLIT
+ if(mode == WXLO_EXPORT_AS_OBJECTS)
+ {
+ export->type = WXLO_EXPORT_EMPTYLINE;
+ export->content.object = NULL; //empty line
+ status->m_line = status->m_line->GetNextLine();
+ if(status->m_line)
+ status->m_iterator = status->m_line->GetFirstObject();
+ return export;
+ }
+ else
+ type = WXLO_TYPE_TEXT;
}
- // else: must be text
wxString *str = new wxString();
// text must be concatenated
- do
+ for(;;)
{
+ while(status->m_iterator == NULLIT)
+ {
+ if(flags & WXLO_EXPORT_AS_HTML)
+ *str += "<br>";
+ if(flags & WXLO_EXPORT_WITH_CRLF)
+ *str += "\r\n";
+ else
+ *str += '\n';
+
+ status->m_line = status->m_line->GetNextLine();
+ if(status->m_line)
+ status->m_iterator = status->m_line->GetFirstObject();
+ else
+ break; // end of list
+ }
+ if(! status->m_line) // reached end of list, fall through
+ break;
+ type = (** status->m_iterator).GetType();
+ if(type == WXLO_TYPE_ICON)
+ break;
switch(type)
{
case WXLO_TYPE_TEXT:
*str += ((wxLayoutObjectText *)*status->m_iterator)->GetText();
break;
case WXLO_TYPE_CMD:
- wxASSERT_MSG( (mode&WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_HTML,
+ wxASSERT_MSG( mode == WXLO_EXPORT_AS_HTML,
"reached cmd object in text mode" );
*str += wxLayoutExportCmdAsHTML(*(wxLayoutObjectCmd const
;
}
status->m_iterator++;
- if(status->m_iterator == NULLIT) // end of line!
- {
- if((mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_HTML)
- *str += "<br>";
- if((mode & WXLO_EXPORT_WITH_CRLF) == WXLO_EXPORT_WITH_CRLF)
- *str += "\r\n";
- else
- *str += '\n';
- status->m_line = status->m_line->GetNextLine();
- if(status->m_line)
- status->m_iterator = status->m_line->GetFirstObject();
- else
- status->m_iterator = NULLIT;
- }
- if(status->m_iterator != NULLIT)
- type = (** status->m_iterator).GetType();
- else
- break;
}
- while(WXLO_IS_TEXT(type));
- export->type = ((mode & WXLO_EXPORT_AS_MASK) == WXLO_EXPORT_AS_HTML)
+ export->type = (mode == WXLO_EXPORT_AS_HTML)
? WXLO_EXPORT_HTML : WXLO_EXPORT_TEXT;
export->content.text = str;
return export;