Commited latest SciTech changes into CVS. This includes updates to the

applet code (with changes copyright headers) as well as updates to the
wxImage and dib.cpp modules to use virtual file systems so that we can
load these objects from ZIP files correctly. The dib.cpp module was
also extensively cleaned up (although the DIB writing code does not
presently use file streams as we couldn't figure out if it was possible
to write to a ZIP file stream). The code has been tested and functions
correctly for both regular files and ZIP files.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Kendall Bennett
2001-06-12 18:52:03 +00:00
parent dba2120c77
commit 716cd4107b
24 changed files with 2093 additions and 778 deletions

View File

@@ -0,0 +1,128 @@
/****************************************************************************
*
* wxWindows HTML Applet Package
*
* Copyright (C) 1991-2001 SciTech Software, Inc.
* All rights reserved.
*
* ========================================================================
*
* The contents of this file are subject to the wxWindows License
* Version 3.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.wxwindows.org/licence3.txt
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* ========================================================================
*
* Language: ANSI C++
* Environment: Any
*
* Description: This file is the implementation of the Preprocessor object
* for parsing the <!--#echo directive
*
****************************************************************************/
// For compilers that support precompilation
#include "wx/wxprec.h"
#include "wx/html/forcelnk.h"
// Include private headers
#include "wx/applet/prepecho.h"
#include "wx/applet/echovar.h"
/*---------------------------- Global variables ---------------------------*/
/*----------------------------- Implementation ----------------------------*/
/****************************************************************************
PARAMETERS:
text - HTML to process for echo directives
RETURNS:
The string containing the processed HTML
REMARKS:
This function replaces #echo directives with a variable retrieved from the
class given in the HTML directive. These classes are created by making a sub
class of wxEchoVariable. Dynamic class construction is used at run time
internally to create an instance of this class and access the value of the
variable.
SEE ALSO:
wxEchoVariable
****************************************************************************/
wxString wxEchoPrep::Process(
const wxString& text) const
{
int i;
char ft[] = "<!--#echo ";
// make a copy so we can replace text as we go without affecting the original
wxString output = text;
while ((i = (output.Lower()).Find(ft)) != -1) {
// Loop until every #echo directive is found
int n, c, end;
wxString cname, parms;
wxString tag;
// grab the tag and remove it from the file
end = (output.Mid(i)).Find("-->");
if (end == -1) {
#ifdef CHECKED
wxMessageBox("wxHTML #echo error: Premature end of file while parsing #echo.","Error",wxICON_ERROR);
#endif
break;
}
end += 3;
tag = output.Mid(i, end);
output.Remove(i, end);
n = (tag.Lower()).Find(" parm=");
c = tag.Find("-->");
if (n == -1) {
n = c;
// find the classname
c = (tag.Mid(10, n-10)).Find(" ");
if (c == -1) n -= 10;
else n = c;
cname = tag.Mid(10, n);
// grab the value from the class, put it in tag since the data is no longer needed
tag = wxEchoVariable::GetValue(cname, NULL);
}
else {
// Find the parms
parms = tag.Mid(n+6, c-n-6);
// Clip off any quotation marks if they exist. (don't die if there arn't any)
c = parms.Find("\"");
if (c != -1) parms = parms.Mid(c+1);
c = parms.Find("\"");
if (c != -1) parms = parms.Mid(0, c);
// find the classname
c = (tag.Mid(10, n-10)).Find(" ");
if (c == -1) n -= 10;
else n = c;
cname = tag.Mid(10, n);
// grab the value from the class, put it in tag since the data is no longer needed
tag = wxEchoVariable::GetValue(cname, parms.c_str());
}
output = (output.Mid(0,i) + tag + output.Mid(i));
}
return output;
}
FORCE_LINK(echovar)