All:
- wxLaunchDefaultBrowser() now supports wxBROWSER_NEW_WINDOW flag
+- wxGetWorkingDirectory() deprecated. Use wxGetCwd() instead.
All (GUI):
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: function.tex
+%% Purpose: Functions and macros
+%% Author: wxWidgets Team
+%% Modified by:
+%% Created:
+%% RCS-ID: $Id$
+%% Copyright: (c) wxWidgets Team
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\chapter{Functions}\label{functions}
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
\setfooter{\thepage}{}{}{}{}{\thepage}
\func{wxString}{wxGetWorkingDirectory}{\param{char *}{buf=NULL}, \param{int }{sz=1000}}
-{\bf NB:} This function is obsolete: use \helpref{wxGetCwd}{wxgetcwd} instead.
+{\bf NB:} This function is deprecated: use \helpref{wxGetCwd}{wxgetcwd} instead.
Copies the current working directory into the buffer if supplied, or
copies the working directory into new storage (which you {\emph must} delete
The second form is used when retrieving translation of string that has
different singular and plural form in English or different plural forms in some
-other language. It takes two extra arguments: as above, \arg{str}
+other language. It takes two extra arguments: as above, \arg{str}
parameter must contain the singular form of the string to be converted and
is used as the key for the search in the catalog. The \arg{strPlural} parameter
is the plural form (in English). The parameter \arg{n} is used to determine the
plural form. If no message catalog is found \arg{str} is returned if `n == 1',
otherwise \arg{strPlural}.
-See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150}
+See \urlref{GNU gettext manual}{http://www.gnu.org/manual/gettext/html\_chapter/gettext\_10.html\#SEC150}
for additional information on plural forms handling. For a shorter alternative
see the \helpref{wxPLURAL()}{wxplural} macro.
Both versions call \helpref{wxLocale::GetString}{wxlocalegetstring}.
Note that this function is not suitable for literal strings in Unicode
-builds, since the literal strings must be enclosed into
+builds, since the literal strings must be enclosed into
\helpref{\_T()}{underscoret} or \helpref{wxT}{wxt} macro which makes them
unrecognised by \texttt{xgettext}, and so they are not extracted to the message
-catalog. Instead, use the \helpref{\_()}{underscore} and
+catalog. Instead, use the \helpref{\_()}{underscore} and
\helpref{wxPLURAL}{wxplural} macro for all literal strings.
\param{const wxString\& }{delims = wxDEFAULT\_DELIMITERS},\\
\param{wxStringTokenizerMode }{mode = wxTOKEN\_DEFAULT}}
-This is a convenience function wrapping
+This is a convenience function wrapping
\helpref{wxStringTokenizer}{wxstringtokenizer} which simply returns all tokens
found in the given \arg{str} in an array.
-Please see
-\helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer}
+Please see
+\helpref{wxStringTokenizer::wxStringTokenizer}{wxstringtokenizerwxstringtokenizer}
for the description of the other parameters.
\func{}{wxON\_BLOCK\_EXIT\_OBJ1}{\param{}{obj}, \param{}{method}, \param{}{p1}}
\func{}{wxON\_BLOCK\_EXIT\_OBJ2}{\param{}{obj}, \param{}{method}, \param{}{p1}, \param{}{p2}}
-This family of macros is similar to \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit}
+This family of macros is similar to \helpref{wxON\_BLOCK\_EXIT}{wxonblockexit}
but calls a method of the given object instead of a free function.
\wxheading{Include files}
\func{bool}{wxLaunchDefaultBrowser}{\param{const wxString\& }{url}, \param{int }{flags = $0$}}
-Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
+Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
\texttt{wxBROWSER\_NEW\_WINDOW} flag, a new window is opened for the URL
(currently this is only supported under Windows).
Used inside a class declaration to make the class known to wxWidgets RTTI
system and also declare that the objects of this class should be dynamically
creatable from run-time type information. Notice that this implies that the
-class should have a default constructor, if this is not the case consider using
+class should have a default constructor, if this is not the case consider using
\helpref{DECLARE\_CLASS}{declareclass}.
Example:
function.
Returns \true on success.
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: image.tex
+%% Purpose: wxImage documentation
+%% Author: wxWidgets Team
+%% Modified by:
+%% Created:
+%% RCS-ID: $Id$
+%% Copyright: (c) wxWidgets Team
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\section{\class{wxImage}}\label{wximage}
This class encapsulates a platform-independent image. An image can be created
via image format handlers. Functions are available to set and get image bits, so
it can be used for basic image manipulation.
-A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead,
+A wxImage cannot (currently) be drawn directly to a \helpref{wxDC}{wxdc}. Instead,
a platform-specific \helpref{wxBitmap}{wxbitmap} object must be created from it using
-the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor.
+the \helpref{wxBitmap::wxBitmap(wxImage,int depth)}{wxbitmapctor} constructor.
This bitmap can then
be drawn in a device context, using \helpref{wxDC::DrawBitmap}{wxdcdrawbitmap}.
corresponds to a transparent pixel (null opacity) while a value of $255$
means that the pixel is 100\% opaque.
-Unlike RGB data, not all images have an alpha channel and before using
+Unlike RGB data, not all images have an alpha channel and before using
\helpref{GetAlpha}{wximagegetalpha} you should check if this image contains
an alpha channel with \helpref{HasAlpha}{wximagehasalpha}. Note that currently only
images loaded from PNG files with transparency information will have an alpha
The following image handlers are available. {\bf wxBMPHandler} is always
installed by default. To use other image formats, install the appropriate
-handler with \helpref{wxImage::AddHandler}{wximageaddhandler} or
+handler with \helpref{wxImage::AddHandler}{wximageaddhandler} or
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
\twocolwidtha{5cm}%
\wxheading{See also}
-\helpref{wxBitmap}{wxbitmap},
+\helpref{wxBitmap}{wxbitmap},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{}{wxImage}{\param{int}{ width}, \param{int}{ height}, \param{unsigned char*}{ data}, \param{bool}{ static\_data = \false}}
-Creates an image from given data with the given width and height. If
+Creates an image from given data with the given width and height. If
{\it static\_data} is true, then wxImage will not delete the actual
image data in its destructor, otherwise it will free it by calling
{\it free()}.
\docparam{mimetype}{MIME type string (for example 'image/jpeg')}
\docparam{index}{Index of the image to load in the case that the image file contains multiple images.
-This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
-"choose the default image" and is interpreted as the first image (index=0) by
+This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
+"choose the default image" and is interpreted as the first image (index=0) by
the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
\docparam{xpmData}{A pointer to XPM image data.}
Depending on how wxWidgets has been configured, not all formats may be available.
Note: any handler other than BMP must be previously
-initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or
+initialized with \helpref{wxImage::AddHandler}{wximageaddhandler} or
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}.
-Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
+Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
hotspot for loaded cursor file:
\begin{verbatim}
int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
\constfunc{unsigned long}{ComputeHistogram}{\param{wxImageHistogram\& }{histogram}}
-Computes the histogram of the image. {\it histogram} is a reference to
-wxImageHistogram object. wxImageHistogram is a specialization of
+Computes the histogram of the image. {\it histogram} is a reference to
+wxImageHistogram object. wxImageHistogram is a specialization of
\helpref{wxHashMap}{wxhashmap} "template" and is defined as follows:
\begin{verbatim}
\wxheading{Return value}
-\false if FindFirstUnusedColour returns \false, \true otherwise.
+\false if FindFirstUnusedColour returns \false, \true otherwise.
\membersection{wxImage::ConvertToBitmap}\label{wximageconverttobitmap}
\constfunc{wxImage}{ConvertToMono}{\param{unsigned char}{ r}, \param{unsigned char}{ g}, \param{unsigned char}{ b}}
Returns monochromatic version of the image. The returned image has white
-colour where the original has {\it (r,g,b)} colour and black colour
+colour where the original has {\it (r,g,b)} colour and black colour
everywhere else.
Example:
\begin{verbatim}
- wxFileDialog FileDlg( this, "Choose Image", ::wxGetWorkingDirectory(), "", _("Image Files ") + wxImage::GetImageExtWildcard(), wxOPEN );
+ wxFileDialog FileDlg( this, "Choose Image", ::wxGetCwd(), "", _("Image Files ") + wxImage::GetImageExtWildcard(), wxOPEN );
\end{verbatim}
\wxheading{See also}
\func{static int}{GetImageCount}{\param{wxInputStream\&}{ stream}, \param{long}{ type = wxBITMAP\_TYPE\_ANY}}
-If the image file contains more than one image and the image handler is capable
+If the image file contains more than one image and the image handler is capable
of retrieving these individually, this function will return the number of
available images.
\constfunc{bool}{GetOrFindMaskColour}{\param{unsigned char}{ *r}, \param{unsigned char}{ *g}, \param{unsigned char}{ *b}}
-Get the current mask colour or find a suitable unused colour that could be
+Get the current mask colour or find a suitable unused colour that could be
used as a mask colour. Returns {\tt true} if the image currently has a mask.
\constfunc{wxImage}{GetSubImage}{\param{const wxRect\&}{ rect}}
-Returns a sub image of the current one as long as the rect belongs entirely to
+Returns a sub image of the current one as long as the rect belongs entirely to
the image.
Gets a user-defined option as an integer. The function is case-insensitive to {\it name}.
-If the given option is not present, the function returns $0$. Use
+If the given option is not present, the function returns $0$. Use
\helpref{wxImage::HasOption}{wximagehasoption} is $0$ is a possibly valid value
for the option.
\wxheading{See also}
-\helpref{wxImageHandler}{wximagehandler},
+\helpref{wxImageHandler}{wximagehandler},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
\docparam{mimetype}{MIME type string (for example 'image/jpeg')}
\docparam{index}{Index of the image to load in the case that the image file contains multiple images.
-This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
-"choose the default image" and is interpreted as the first image (index=0) by
+This is only used by GIF, ICO and TIFF handlers. The default value (-1) means
+"choose the default image" and is interpreted as the first image (index=0) by
the GIF and TIFF handler and as the largest and most colourful one by the ICO handler.}
\wxheading{Remarks}
Depending on how wxWidgets has been configured, not all formats may be available.
-Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
+Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to get the
hotspot for loaded cursor file:
\begin{verbatim}
int hotspot_x = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
\func{wxImage \&}{Rescale}{\param{int}{ width}, \param{int}{ height}}
-Changes the size of the image in-place by scaling it: after a call to this function,
+Changes the size of the image in-place by scaling it: after a call to this function,
the image will have the given width and height.
Returns the (modified) image itself.
\func{wxImage \&}{Resize}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
-Changes the size of the image in-place without scaling it by adding either a border
-with the given colour or cropping as necessary. The image is pasted into a new
-image with the given {\it size} and background colour at the position {\it pos}
-relative to the upper left of the new image. If {\it red = green = blue = -1}
-then use either the current mask colour if set or find, use, and set a
+Changes the size of the image in-place without scaling it by adding either a border
+with the given colour or cropping as necessary. The image is pasted into a new
+image with the given {\it size} and background colour at the position {\it pos}
+relative to the upper left of the new image. If {\it red = green = blue = -1}
+then use either the current mask colour if set or find, use, and set a
suitable mask colour for any newly exposed areas.
Returns the (modified) image itself.
Depending on how wxWidgets has been configured, not all formats may be available.
-Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the
-hotspot before saving an image into a cursor file (default hotspot is in
+Note: you can use \helpref{GetOptionInt}{wximagegetoptionint} to set the
+hotspot before saving an image into a cursor file (default hotspot is in
the centre of the image):
\begin{verbatim}
image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotspotX);
is to blit a wxMemoryDC into another wxMemoryDC.
It may be mentioned that the GTK port uses this function internally
-to scale bitmaps when using mapping modes in wxDC.
+to scale bitmaps when using mapping modes in wxDC.
Example:
\constfunc{wxImage}{Size}{\param{const wxSize\&}{ size}, \param{const wxPoint&}{ pos}, \param{int}{ red = -1}, \param{int}{ green = -1}, \param{int}{ blue = -1}}
-Returns a resized version of this image without scaling it by adding either a border
-with the given colour or cropping as necessary. The image is pasted into a new
-image with the given {\it size} and background colour at the position {\it pos}
-relative to the upper left of the new image. If {\it red = green = blue = -1}
-then use either the current mask colour if set or find, use, and set a
+Returns a resized version of this image without scaling it by adding either a border
+with the given colour or cropping as necessary. The image is pasted into a new
+image with the given {\it size} and background colour at the position {\it pos}
+relative to the upper left of the new image. If {\it red = green = blue = -1}
+then use either the current mask colour if set or find, use, and set a
suitable mask colour for any newly exposed areas.
\wxheading{See also}
This function is similar to \helpref{SetData}{wximagesetdata} and has similar
restrictions. The pointer passed to it may however be {\tt NULL} in which case
the function will allocate the alpha array internally -- this is useful to add
-alpha channel data to an image which doesn't have any. If the pointer is not
-{\tt NULL}, it must have one byte for each image pixel and be allocated with
+alpha channel data to an image which doesn't have any. If the pointer is not
+{\tt NULL}, it must have one byte for each image pixel and be allocated with
{\tt malloc()}. wxImage takes ownership of the pointer and will free it unless
\arg{static\_data} parameter is set.to \true -- in this case the caller should
do it.
Sets image's mask so that the pixels that have RGB value of {\it mr,mg,mb}
in {\it mask} will be masked in the image. This is done by first finding an
unused colour in the image, setting this colour as the mask colour and then
-using this colour to draw all pixels in the image who corresponding pixel
+using this colour to draw all pixels in the image who corresponding pixel
in {\it mask} has given RGB value.
\wxheading{Return value}
Returns false if {\it mask} does not have same dimensions as the image or if
-there is no unused colour left. Returns true if the mask was successfully
+there is no unused colour left. Returns true if the mask was successfully
applied.
\wxheading{Notes}
Sets the pixel at the given coordinate. This routine performs bounds-checks
for the coordinate so it can be considered a safe way to manipulate the
data, but in some cases this might be too slow so that the data will have to
-be set directly. In that case you will have to get access to the image data
+be set directly. In that case you will have to get access to the image data
using the \helpref{GetData}{wximagegetdata} method.
\wxheading{See also}
-\helpref{wxImage}{wximage},
+\helpref{wxImage}{wximage},
\helpref{wxInitAllImageHandlers}{wxinitallimagehandlers}
\latexignore{\rtfignore{\wxheading{Members}}}
\func{int}{GetImageCount}{\param{wxInputStream\&}{ stream}}
-If the image file contains more than one image and the image handler is capable
+If the image file contains more than one image and the image handler is capable
of retrieving these individually, this function will return the number of
available images.
\wxheading{See also}
-\helpref{wxImage::LoadFile}{wximageloadfile},
-\helpref{wxImage::SaveFile}{wximagesavefile},
+\helpref{wxImage::LoadFile}{wximageloadfile},
+\helpref{wxImage::SaveFile}{wximagesavefile},
\helpref{wxImageHandler::SaveFile}{wximagehandlersavefile}
\wxheading{See also}
-\helpref{wxImage::LoadFile}{wximageloadfile},
-\helpref{wxImage::SaveFile}{wximagesavefile},
+\helpref{wxImage::LoadFile}{wximageloadfile},
+\helpref{wxImage::SaveFile}{wximagesavefile},
\helpref{wxImageHandler::LoadFile}{wximagehandlerloadfile}
\wxheading{Parameters}
\docparam{name}{Handler type.}
-
WXDLLIMPEXP_BASE bool wxRenameFile(const wxString& file1, const wxString& file2);
// Get current working directory.
+#if WXWIN_COMPATIBILITY_2_6
// If buf is NULL, allocates space using new, else
// copies into buf.
// IMPORTANT NOTE getcwd is know not to work under some releases
// of Win32s 1.3, according to MS release notes!
-WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = (wxChar *) NULL, int sz = 1000);
+wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = (wxChar *) NULL, int sz = 1000) );
// new and preferred version of wxGetWorkingDirectory
// NB: can't have the same name because of overloading ambiguity
+#endif // WXWIN_COMPATIBILITY_2_6
WXDLLIMPEXP_BASE wxString wxGetCwd();
// Set working directory
if ( f.empty() || wxIsAbsolutePath(f) )
return f;
- wxString buf;
- wxGetWorkingDirectory(wxStringBuffer(buf, _MAXPATHLEN), _MAXPATHLEN);
+ wxString buf = ::wxGetCwd();
if ( !wxEndsWithPathSeparator(buf) )
{
void wxStripExtension(wxString& buffer)
{
//RN: Be careful about the handling the case where
- //buffer.Length() == 0
- for(size_t i = buffer.Length() - 1; i != wxString::npos; --i)
+ //buffer.length() == 0
+ for(size_t i = buffer.length() - 1; i != wxString::npos; --i)
{
if (buffer.GetChar(i) == wxT('.'))
{
return path;
}
+wxString wxRealPath(const wxString& path)
+{
+ wxChar *buf1=MYcopystring(path);
+ wxChar *buf2=wxRealPath(buf1);
+ wxString buf(buf2);
+ delete [] buf1;
+ return buf;
+}
+
+
// Must be destroyed
wxChar *wxCopyAbsolutePath(const wxString& filename)
{
- if (filename.empty())
- return (wxChar *) NULL;
+ if (filename.empty())
+ return (wxChar *) NULL;
- if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename))) {
- wxChar buf[_MAXPATHLEN];
- buf[0] = wxT('\0');
- wxGetWorkingDirectory(buf, WXSIZEOF(buf));
- wxChar ch = buf[wxStrlen(buf) - 1];
+ if (! wxIsAbsolutePath(wxExpandPath(wxFileFunctionsBuffer, filename)))
+ {
+ wxString buf = ::wxGetCwd();
+ wxChar ch = buf.Last();
#ifdef __WXMSW__
- if (ch != wxT('\\') && ch != wxT('/'))
- wxStrcat(buf, wxT("\\"));
+ if (ch != wxT('\\') && ch != wxT('/'))
+ buf << wxT("\\");
#else
- if (ch != wxT('/'))
- wxStrcat(buf, wxT("/"));
+ if (ch != wxT('/'))
+ buf << wxT("/");
#endif
- wxStrcat(buf, wxFileFunctionsBuffer);
- return MYcopystring( wxRealPath(buf) );
- }
- return MYcopystring( wxFileFunctionsBuffer );
+ buf << wxFileFunctionsBuffer;
+ buf = wxRealPath( buf );
+ return MYcopystring( buf );
+ }
+ return MYcopystring( wxFileFunctionsBuffer );
}
/*-
// Local copy
wxStrcpy (buf, WXSTRINGCAST path);
- int l = path.Length();
+ int l = path.length();
int i = l - 1;
// Search backward for a backward or forward slash
// Get current working directory.
-// If buf is NULL, allocates space using new, else
-// copies into buf.
-wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
+// If buf is NULL, allocates space using new, else copies into buf.
+// wxGetWorkingDirectory() is obsolete, use wxGetCwd()
+// wxDoGetCwd() is their common core to be moved
+// to wxGetCwd() once wxGetWorkingDirectory() will be removed.
+// Do not expose wxDoGetCwd in headers!
+
+wxChar *wxDoGetCwd(wxChar *buf, int sz)
{
#if defined(__WXPALMOS__)
- // TODO ?
+ // TODO
+ if(buf && sz>0) buf[0] = _T('\0');
return NULL;
#elif defined(__WXWINCE__)
// TODO
- wxUnusedVar(buf);
- wxUnusedVar(sz);
+ if(buf && sz>0) buf[0] = _T('\0');
return NULL;
#else
if ( !buf )
// __WXWINCE__
}
-wxString wxGetCwd()
+#if WXWIN_COMPATIBILITY_2_6
+wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
{
- wxChar *buffer = new wxChar[_MAXPATHLEN];
- wxGetWorkingDirectory(buffer, _MAXPATHLEN);
- wxString str( buffer );
- delete [] buffer;
+ return wxDoGetCwd(buf,sz);
+}
+#endif // WXWIN_COMPATIBILITY_2_6
+wxString wxGetCwd()
+{
+ wxString str;
+ wxDoGetCwd(wxStringBuffer(str, _MAXPATHLEN), _MAXPATHLEN);
return str;
}
file = ifile;
if(! wxIsAbsolutePath(file))
{
- wxChar* f = wxGetWorkingDirectory();
- file = f;
- delete[] f; // wxGetWorkingDirectory returns new memory
+ file = wxGetCwd();
#ifdef __WXMAC__
file << ifile;
#else
file << m_MapFile << WXEXTHELP_SEPARATOR << contents;
if(file.Contains(wxT('#')))
file = file.BeforeLast(wxT('#'));
- if(contents.Length() && wxFileExists(file))
+ if(contents.length() && wxFileExists(file))
rc = DisplaySection(CONTENTS_ID);
// if not found, open homemade toc:
#endif // wxUSE_HELP
-
bool RTFGo(void)
{
- if (stopRunning)
- return false;
+ if (stopRunning)
+ return false;
- // Reset variables
- indentLevel = 0;
- forbidParindent = 0;
- contentsLineSection = NULL;
- contentsLineValue = NULL;
- descriptionItemArg = NULL;
- inTabular = false;
- inTable = false;
- inFigure = false;
- startRows = false;
- tableVerticalLineLeft = false;
- tableVerticalLineRight = false;
- noColumns = 0;
- startedSections = false;
- inVerbatim = false;
- browseId = 0;
-
- if (!InputFile.empty() && !OutputFile.empty())
- {
- // Do some RTF-specific transformations on all the strings,
- // recursively
- Text2RTF(GetTopLevelChunk());
-
- Contents = wxFopen(TmpContentsName, _T("w"));
- Chapters = wxFopen(_T("chapters.rtf"), _T("w"));
- if (winHelp)
- {
- Sections = wxFopen(_T("sections.rtf"), _T("w"));
- Subsections = wxFopen(_T("subsections.rtf"), _T("w"));
- Subsubsections = wxFopen(_T("subsubsections.rtf"), _T("w"));
- Popups = wxFopen(_T("popups.rtf"), _T("w"));
- if (winHelpContents)
- {
- WinHelpContentsFile = wxFopen(WinHelpContentsFileName, _T("w"));
- if (WinHelpContentsFile)
- wxFprintf(WinHelpContentsFile, _T(":Base %s.hlp\n"), wxFileNameFromPath(FileRoot));
- }
+ // Reset variables
+ indentLevel = 0;
+ forbidParindent = 0;
+ contentsLineSection = NULL;
+ contentsLineValue = NULL;
+ descriptionItemArg = NULL;
+ inTabular = false;
+ inTable = false;
+ inFigure = false;
+ startRows = false;
+ tableVerticalLineLeft = false;
+ tableVerticalLineRight = false;
+ noColumns = 0;
+ startedSections = false;
+ inVerbatim = false;
+ browseId = 0;
+
+ if (!InputFile.empty() && !OutputFile.empty())
+ {
+ // Do some RTF-specific transformations on all the strings,
+ // recursively
+ Text2RTF(GetTopLevelChunk());
+
+ Contents = wxFopen(TmpContentsName, _T("w"));
+ Chapters = wxFopen(_T("chapters.rtf"), _T("w"));
+ if (winHelp)
+ {
+ Sections = wxFopen(_T("sections.rtf"), _T("w"));
+ Subsections = wxFopen(_T("subsections.rtf"), _T("w"));
+ Subsubsections = wxFopen(_T("subsubsections.rtf"), _T("w"));
+ Popups = wxFopen(_T("popups.rtf"), _T("w"));
+ if (winHelpContents)
+ {
+ WinHelpContentsFile = wxFopen(WinHelpContentsFileName, _T("w"));
+ if (WinHelpContentsFile)
+ wxFprintf(WinHelpContentsFile, _T(":Base %s.hlp\n"), wxFileNameFromPath(FileRoot));
+ }
- if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile))
- {
- OnError(_T("Ouch! Could not open temporary file(s) for writing."));
- return false;
- }
- }
- if (!Contents || !Chapters)
- {
- OnError(_T("Ouch! Could not open temporary file(s) for writing."));
- return false;
- }
+ if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile))
+ {
+ OnError(_T("Ouch! Could not open temporary file(s) for writing."));
+ return false;
+ }
+ }
+ if (!Contents || !Chapters)
+ {
+ OnError(_T("Ouch! Could not open temporary file(s) for writing."));
+ return false;
+ }
- if (winHelp)
- {
- wxFprintf(Chapters, _T("\n#{\\footnote Contents}\n"));
- wxFprintf(Chapters, _T("${\\footnote Contents}\n"));
- wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
- wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ContentsNameString);
- wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
- }
- if (!winHelp)
- {
- wxFprintf(Chapters, _T("\\titlepg\n"));
- wxFprintf(Contents, _T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
- }
+ if (winHelp)
+ {
+ wxFprintf(Chapters, _T("\n#{\\footnote Contents}\n"));
+ wxFprintf(Chapters, _T("${\\footnote Contents}\n"));
+ wxFprintf(Chapters, _T("+{\\footnote %s}\n"), GetBrowseString());
+ wxFprintf(Chapters, _T("K{\\footnote {K} %s}\n"), ContentsNameString);
+ wxFprintf(Chapters, _T("!{\\footnote DisableButton(\"Up\")}\n"));
+ }
+ if (!winHelp)
+ {
+ wxFprintf(Chapters, _T("\\titlepg\n"));
+ wxFprintf(Contents, _T("\\par\\pard\\pgnrestart\\sect\\titlepg"));
+ }
- // In WinHelp, Contents title takes font of title.
- // In linear RTF, same as chapter headings.
- wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
- (winHelp ? titleFont : chapterFont)*2, ContentsNameString);
+ // In WinHelp, Contents title takes font of title.
+ // In linear RTF, same as chapter headings.
+ wxFprintf(Contents, _T("{\\b\\fs%d %s}\\par\\par\\pard\n\n"),
+ (winHelp ? titleFont : chapterFont)*2, ContentsNameString);
- // By default, Swiss, 11 point.
- wxFprintf(Chapters, _T("\\f2\\fs22\n"));
+ // By default, Swiss, 11 point.
+ wxFprintf(Chapters, _T("\\f2\\fs22\n"));
- PushEnvironmentStyle(_T("\\f2\\fs22\\sa200"));
+ PushEnvironmentStyle(_T("\\f2\\fs22\\sa200"));
- SetCurrentOutput(Chapters);
+ SetCurrentOutput(Chapters);
- if (stopRunning)
- return false;
+ if (stopRunning)
+ return false;
- OnInform(_T("Converting..."));
+ OnInform(_T("Converting..."));
- TraverseDocument();
+ TraverseDocument();
- FILE *Header = wxFopen(_T("header.rtf"), _T("w"));
- if (!Header)
- {
- OnError(_T("Ouch! Could not open temporary file header.rtf for writing."));
- return false;
- }
- WriteRTFHeader(Header);
- fclose(Header);
+ FILE *Header = wxFopen(_T("header.rtf"), _T("w"));
+ if (!Header)
+ {
+ OnError(_T("Ouch! Could not open temporary file header.rtf for writing."));
+ return false;
+ }
+ WriteRTFHeader(Header);
+ fclose(Header);
- PopEnvironmentStyle();
+ PopEnvironmentStyle();
- Tex2RTFYield(true);
- if (winHelp)
- {
-// wxFprintf(Contents, _T("\\page\n"));
- wxFprintf(Chapters, _T("\\page\n"));
- wxFprintf(Sections, _T("\\page\n"));
- wxFprintf(Subsections, _T("\\page\n"));
- wxFprintf(Subsubsections, _T("\\page\n\n"));
- wxFprintf(Popups, _T("\\page\n}\n"));
- }
+ Tex2RTFYield(true);
+ if (winHelp)
+ {
+// wxFprintf(Contents, _T("\\page\n"));
+ wxFprintf(Chapters, _T("\\page\n"));
+ wxFprintf(Sections, _T("\\page\n"));
+ wxFprintf(Subsections, _T("\\page\n"));
+ wxFprintf(Subsubsections, _T("\\page\n\n"));
+ wxFprintf(Popups, _T("\\page\n}\n"));
+ }
-// TexOutput(_T("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"));
- if (!winHelp)
- TexOutput(_T("}\n"));
- fclose(Contents); Contents = NULL;
- fclose(Chapters); Chapters = NULL;
- if (winHelp)
- {
- fclose(Sections); Sections = NULL;
- fclose(Subsections); Subsections = NULL;
- fclose(Subsubsections); Subsubsections = NULL;
- fclose(Popups); Popups = NULL;
- if (winHelpContents)
- {
- fclose(WinHelpContentsFile); WinHelpContentsFile = NULL;
- }
- }
+// TexOutput(_T("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"));
+ if (!winHelp)
+ TexOutput(_T("}\n"));
+ fclose(Contents); Contents = NULL;
+ fclose(Chapters); Chapters = NULL;
+ if (winHelp)
+ {
+ fclose(Sections); Sections = NULL;
+ fclose(Subsections); Subsections = NULL;
+ fclose(Subsubsections); Subsubsections = NULL;
+ fclose(Popups); Popups = NULL;
+ if (winHelpContents)
+ {
+ fclose(WinHelpContentsFile); WinHelpContentsFile = NULL;
+ }
+ }
- if (winHelp)
- {
- wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
- Tex2RTFYield(true);
- wxConcatFiles(_T("tmp1.rtf"), _T("sections.rtf"), _T("tmp2.rtf"));
- Tex2RTFYield(true);
- wxConcatFiles(_T("tmp2.rtf"), _T("subsections.rtf"), _T("tmp3.rtf"));
- Tex2RTFYield(true);
- wxConcatFiles(_T("tmp3.rtf"), _T("subsubsections.rtf"), _T("tmp4.rtf"));
- Tex2RTFYield(true);
- wxConcatFiles(_T("tmp4.rtf"), _T("popups.rtf"), OutputFile);
- Tex2RTFYield(true);
-
- wxRemoveFile(_T("tmp1.rtf"));
- wxRemoveFile(_T("tmp2.rtf"));
- wxRemoveFile(_T("tmp3.rtf"));
- wxRemoveFile(_T("tmp4.rtf"));
- }
- else
- {
- wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
- Tex2RTFYield(true);
- if (wxFileExists(OutputFile))
- wxRemoveFile(OutputFile);
+ if (winHelp)
+ {
+ wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
+ Tex2RTFYield(true);
+ wxConcatFiles(_T("tmp1.rtf"), _T("sections.rtf"), _T("tmp2.rtf"));
+ Tex2RTFYield(true);
+ wxConcatFiles(_T("tmp2.rtf"), _T("subsections.rtf"), _T("tmp3.rtf"));
+ Tex2RTFYield(true);
+ wxConcatFiles(_T("tmp3.rtf"), _T("subsubsections.rtf"), _T("tmp4.rtf"));
+ Tex2RTFYield(true);
+ wxConcatFiles(_T("tmp4.rtf"), _T("popups.rtf"), OutputFile);
+ Tex2RTFYield(true);
+
+ wxRemoveFile(_T("tmp1.rtf"));
+ wxRemoveFile(_T("tmp2.rtf"));
+ wxRemoveFile(_T("tmp3.rtf"));
+ wxRemoveFile(_T("tmp4.rtf"));
+ }
+ else
+ {
+ wxConcatFiles(_T("header.rtf"), _T("chapters.rtf"), _T("tmp1.rtf"));
+ Tex2RTFYield(true);
+ if (wxFileExists(OutputFile))
+ wxRemoveFile(OutputFile);
- wxChar *cwdStr;
- cwdStr = wxGetWorkingDirectory();
+ wxString cwdStr = wxGetCwd();
- wxString outputDirStr;
- outputDirStr = wxPathOnly(OutputFile);
+ wxString outputDirStr = wxPathOnly(OutputFile);
- // Determine if the temp file and the output file are in the same directory,
- // and if they are, then just rename the temp file rather than copying
- // it, as this is much faster when working with large (multi-megabyte files)
- if ((wxStrcmp(outputDirStr.c_str(),_T("")) == 0) || // no path specified on output file
- (wxStrcmp(cwdStr,outputDirStr.c_str()) == 0)) // paths do not match
- {
- wxRenameFile(_T("tmp1.rtf"), OutputFile);
- }
- else
- {
- wxCopyFile(_T("tmp1.rtf"), OutputFile);
- }
- delete [] cwdStr;
- Tex2RTFYield(true);
- wxRemoveFile(_T("tmp1.rtf"));
- }
+ // Determine if the temp file and the output file are in the same directory,
+ // and if they are, then just rename the temp file rather than copying
+ // it, as this is much faster when working with large (multi-megabyte files)
+ if ((outputDirStr.empty()) || // no path specified on output file
+ (cwdStr != outputDirStr)) // paths do not match
+ {
+ wxRenameFile(_T("tmp1.rtf"), OutputFile);
+ }
+ else
+ {
+ wxCopyFile(_T("tmp1.rtf"), OutputFile);
+ }
+ Tex2RTFYield(true);
+ wxRemoveFile(_T("tmp1.rtf"));
+ }
- if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
+ if (wxFileExists(ContentsName)) wxRemoveFile(ContentsName);
- if (!wxRenameFile(TmpContentsName, ContentsName))
- {
- wxCopyFile(TmpContentsName, ContentsName);
- wxRemoveFile(TmpContentsName);
- }
+ if (!wxRenameFile(TmpContentsName, ContentsName))
+ {
+ wxCopyFile(TmpContentsName, ContentsName);
+ wxRemoveFile(TmpContentsName);
+ }
- wxRemoveFile(_T("chapters.rtf"));
- wxRemoveFile(_T("header.rtf"));
+ wxRemoveFile(_T("chapters.rtf"));
+ wxRemoveFile(_T("header.rtf"));
- if (winHelp)
- {
- wxRemoveFile(_T("sections.rtf"));
- wxRemoveFile(_T("subsections.rtf"));
- wxRemoveFile(_T("subsubsections.rtf"));
- wxRemoveFile(_T("popups.rtf"));
+ if (winHelp)
+ {
+ wxRemoveFile(_T("sections.rtf"));
+ wxRemoveFile(_T("subsections.rtf"));
+ wxRemoveFile(_T("subsubsections.rtf"));
+ wxRemoveFile(_T("popups.rtf"));
+ }
+ if (winHelp && generateHPJ)
+ WriteHPJ(OutputFile);
+ return true;
}
- if (winHelp && generateHPJ)
- WriteHPJ(OutputFile);
- return true;
- }
- return false;
+ return false;
}