/*
** Command & Conquer Generals(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
////////////////////////////////////////////////////////////////////////////////
// //
// (c) 2001-2003 Electronic Arts Inc. //
// //
////////////////////////////////////////////////////////////////////////////////
/******************************************************************************
*
* NAME
* $Archive: $
*
* DESCRIPTION
* Web Browser
*
* PROGRAMMER
* Bryan Cleveland
* $Author: $
*
* VERSION INFO
* $Revision: $
* $Modtime: $
*
******************************************************************************/
#pragma once
#ifndef __WEBBROWSER_H__
#define __WEBBROWSER_H__
#include "Common/SubsystemInterface.h"
#include
#include
#include
#include "EABrowserDispatch/BrowserDispatch.h"
#include "FEBDispatch.h"
class GameWindow;
class WebBrowserURL : public MemoryPoolObject
{
MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE( WebBrowserURL, "WebBrowserURL" )
public:
WebBrowserURL();
// virtual destructor prototype defined by memory pool object
const FieldParse *getFieldParse( void ) const { return m_URLFieldParseTable; }
AsciiString m_tag;
AsciiString m_url;
WebBrowserURL *m_next;
static const FieldParse m_URLFieldParseTable[]; ///< the parse table for INI definition
};
class WebBrowser :
public FEBDispatch,
public SubsystemInterface
{
public:
void init( void );
void reset( void );
void update( void );
// Create an instance of the embedded browser for Dune Emperor.
virtual Bool createBrowserWindow(char *tag, GameWindow *win) = 0;
virtual void closeBrowserWindow(GameWindow *win) = 0;
WebBrowserURL *makeNewURL(AsciiString tag);
WebBrowserURL *findURL(AsciiString tag);
protected:
// Protected to prevent direct construction via new, use CreateInstance() instead.
WebBrowser();
virtual ~WebBrowser();
// Protected to prevent copy and assignment
WebBrowser(const WebBrowser&);
const WebBrowser& operator=(const WebBrowser&);
// Bool RetrievePageURL(const char* page, char* url, int size);
// Bool RetrieveHTMLPath(char* path, int size);
protected:
ULONG mRefCount;
WebBrowserURL *m_urlList;
//---------------------------------------------------------------------------
// IUnknown methods
//---------------------------------------------------------------------------
protected:
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
ULONG STDMETHODCALLTYPE AddRef(void);
ULONG STDMETHODCALLTYPE Release(void);
//---------------------------------------------------------------------------
// IBrowserDispatch methods
//---------------------------------------------------------------------------
public:
STDMETHOD(TestMethod)(Int num1);
};
extern CComObject *TheWebBrowser;
#endif // __WEBBROWSER_H__