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

@@ -5,23 +5,19 @@
* Copyright (C) 1991-2001 SciTech Software, Inc.
* All rights reserved.
*
* ======================================================================
* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
* | |
* |This copyrighted computer code is a proprietary trade secret of |
* |SciTech Software, Inc., located at 505 Wall Street, Chico, CA 95928 |
* |USA (www.scitechsoft.com). ANY UNAUTHORIZED POSSESSION, USE, |
* |VIEWING, COPYING, MODIFICATION OR DISSEMINATION OF THIS CODE IS |
* |STRICTLY PROHIBITED BY LAW. Unless you have current, express |
* |written authorization from SciTech to possess or use this code, you |
* |may be subject to civil and/or criminal penalties. |
* | |
* |If you received this code in error or you would like to report |
* |improper use, please immediately contact SciTech Software, Inc. at |
* |530-894-8400. |
* | |
* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
* ======================================================================
* ========================================================================
*
* 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
@@ -82,7 +78,10 @@ wxHtmlAppletWindow::wxHtmlAppletWindow(
const wxString& name)
: wxHtmlWindow(parent,id,pos,size,style,name)
{
//setup client navbars
// Init our locks
UnLock();
// setup client navbars
if (navBar) {
m_NavBar = navBar;
m_NavBackId = navBackId;
@@ -92,7 +91,7 @@ wxHtmlAppletWindow::wxHtmlAppletWindow(
m_NavBar = NULL;
}
//Add HTML preprocessors
// Add HTML preprocessors
// deleting preprocessors is done by the code within the window
incPreprocessor = new wxIncludePrep(); // #include preprocessor
@@ -102,8 +101,6 @@ wxHtmlAppletWindow::wxHtmlAppletWindow(
this->AddProcessor(incPreprocessor);
this->AddProcessor(echoPreprocessor);
this->AddProcessor(ifPreprocessor);
}
/****************************************************************************
@@ -240,23 +237,21 @@ bool wxHtmlAppletWindow::LoadPage(
}
}
// Grab the directory from the string for use in the include preprocessor
// make sure we get either type of / or \.
int ch = link.Find('\\', true);
if (ch == -1) ch = link.Find('/', true);
if (ch != -1) {
wxFileSystem fs;
wxString tmp = link.Mid(0, ch+1);
fs.ChangePathTo(incPreprocessor->GetDirectory(), true);
fs.ChangePathTo(tmp, true);
incPreprocessor->ChangeDirectory(fs.GetPath());
}
// Make a copy of the current path the translate for <!-- include files from what will be the new path
// we cannot just grab this value from the base class since it is not correct until after LoadPage is
// called. And we need the incPreprocessor to know the right path before LoadPage.
wxFileSystem fs;
fs.ChangePathTo(m_FS->GetPath(), true);
fs.ChangePathTo(link);
incPreprocessor->ChangeDirectory(fs.GetPath());
// Inform all the applets that the new page is being loaded
for (wxAppletList::Node *node = m_AppletList.GetFirst(); node; node = node->GetNext())
(node->GetData())->OnLinkClicked(wxHtmlLinkInfo(href));
bool stat = wxHtmlWindow::LoadPage(href);
// Enable/Dis the navbar tools
if (m_NavBar) {
m_NavBar->EnableTool(m_NavForwardId,HistoryCanForward());
@@ -431,10 +426,20 @@ need to change the page for the current window to a new window.
void wxHtmlAppletWindow::OnLoadPage(
wxLoadPageEvent &event)
{
if (event.GetHtmlWindow() == this){
if (LoadPage(event.GetHRef())){
wxPageLoadedEvent evt;
// Test the mutex lock. We have to do this here because wxHTML constantly
// calls wxYield which processes the message queue. This in turns means
// that we may end up processing a new 'loadPage' event while the new
// page is still loading! We need to avoid this so we use a simple
// lock to avoid loading a page while presently loading another page.
if (TryLock()) {
if (event.GetHtmlWindow() == this){
if (LoadPage(event.GetHRef())){
// wxPageLoadedEvent evt;
// NOTE: This is reserved for later use as we might need to send
// page loaded events to applets.
}
}
UnLock();
}
}
@@ -452,6 +457,23 @@ void wxHtmlAppletWindow::OnPageLoaded(
Enable(true);
}
/****************************************************************************
PARAMETERS:
none
REMARKS:
This function tries to lock the mutex. If it can't, returns
immediately with false.
***************************************************************************/
bool wxHtmlAppletWindow::TryLock()
{
if (!m_mutexLock) {
m_mutexLock = true;
return true;
}
return false;
}
/****************************************************************************
PARAMETERS:
name - name of the last applet that changed the data in this object