This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

211 lines
8.4 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef IHTML_H
#define IHTML_H
#ifdef _WIN32
#pragma once
#endif
#include "Cursor.h"
#include "IImage.h"
#include "KeyCode.h"
#include "MouseCode.h"
#include "VGUI.h"
namespace vgui {
//-----------------------------------------------------------------------------
// Purpose: basic interface for a HTML window
//-----------------------------------------------------------------------------
class IHTML {
public:
// open a new page
virtual void OpenURL(const char *) = 0;
// stops the existing page from loading
virtual bool StopLoading() = 0;
// refreshes the current page
virtual bool Refresh() = 0;
// display the control -- deprecated !! Use SetVisible() instead!
virtual bool Show(bool shown) = 0;
// return the currently opened page
virtual const char *GetOpenedPage() = 0;
// called when the browser needs to be resized
virtual void Obsolete_OnSize(int x, int y, int w, int h) = 0;
// returns the width and height (in pixels) of the HTML full page (not just
// the displayed region)
virtual void GetHTMLSize(int &wide, int &tall) = 0;
// clear the text in an existing control
virtual void Clear() = 0;
// add text to the browser control (as a HTML formated string)
virtual void AddText(const char *text) = 0;
enum MOUSE_STATE { UP, DOWN, MOVE, DBLCLICK };
// unused functions we keep around so the vtable layout is binary compatible
virtual void Obsolete_OnMouse(MouseCode code, MOUSE_STATE s, int x,
int y) = 0;
virtual void Obsolete_OnChar(wchar_t unichar) = 0;
virtual void Obsolete_OnKeyDown(ButtonCode_t code) = 0;
virtual vgui::IImage *GetBitmap() = 0;
virtual void SetVisible(bool state) = 0;
virtual void SetSize(int wide, int tall) = 0;
virtual void OnMouse(MouseCode code, MOUSE_STATE s, int x, int y,
bool bPopupMenuMenu) = 0;
virtual void OnChar(wchar_t unichar, bool bPopupMenu) = 0;
virtual void OnKeyDown(ButtonCode_t code, bool bPopupMenu) = 0;
virtual void ScrollV(int nPixels) = 0;
virtual void ScrollH(int nPixels) = 0;
virtual void OnMouseWheeled(int delta, bool bPopupMenu) = 0;
// called when the browser needs to be resized
virtual void OnKeyUp(ButtonCode_t code, bool bPopupMenu) = 0;
// open a URL with the provided POST data (which can be much larger than the
// max URL of 512 chars) NOTE - You CANNOT have get params (i.e a "?" ) in
// pchURL if pchPostData is set (due to an IE bug)
virtual void PostURL(const char *pchURL, const char *pchPostData) = 0;
// Run javascript within the browser control
virtual void RunJavascript(const char *pchScript) = 0;
virtual void SetMousePosition(int x, int y, bool bPopupMenu) = 0;
virtual void SetUserAgentInfo(const wchar_t *pwchUserAgent) = 0;
// can't add custom headers to IE
virtual void AddHeader(const char *pchHeader, const char *pchValue) = 0;
virtual void SetFileDialogChoice(const char *pchFileName) = 0;
// we are hiding the popup, so make sure webkit knows
virtual void HidePopup() = 0;
virtual void SetHTMLFocus() = 0;
virtual void KillHTMLFocus() = 0;
// ask webkit about the size of any scrollbars it wants to render
virtual void HorizontalScrollBarSize(int &x, int &y, int &wide,
int &tall) = 0;
virtual void VerticalScrollBarSize(int &x, int &y, int &wide,
int &tall) = 0;
virtual int HorizontalScroll() = 0;
virtual int VerticalScroll() = 0;
virtual int HorizontalScrollMax() = 0;
virtual int VerticalScrollMax() = 0;
virtual bool IsHorizontalScrollBarVisible() = 0;
virtual bool IsVeritcalScrollBarVisible() = 0;
virtual void SetHorizontalScroll(int scroll) = 0;
virtual void SetVerticalScroll(int scroll) = 0;
virtual void ViewSource() = 0;
virtual void Copy() = 0;
virtual void Paste() = 0;
// IE specific calls
virtual bool IsIERender() = 0;
virtual void GetIDispatchPtr(void **pIDispatch) = 0;
virtual void GetHTMLScroll(int &top, int &left) = 0;
};
//-----------------------------------------------------------------------------
// Purpose: possible load errors when you open a url in the web browser
//-----------------------------------------------------------------------------
enum EWebPageLoadError {
eLoadErrorNone = 0,
eMimeTypeNotSupported, // probably trying to download an exe or something
eCacheMiss, // Usually caused by navigating to a page with POST data via
// back or forward buttons
eBadURL, // bad url passed in (invalid hostname, malformed)
eConnectionProblem, // network connectivity problem, server offline or user
// not on internet
eProxyConnectionProblem, // User is configured to use proxy, but we can't
// use it
eLoadErrorUnknown, // not a load type we classify right now, check out
// cef_handler_errorcode_t for the full list we could
// translate
};
//-----------------------------------------------------------------------------
// Purpose: basic callback interface for a HTML window
//-----------------------------------------------------------------------------
class IHTMLEvents {
public:
// unused functions we keep around so the vtable layout is binary compatible
virtual bool Obsolete_OnStartURL(const char *url, const char *target,
bool first) = 0;
virtual void Obsolete_OnFinishURL(const char *url) = 0;
virtual void Obsolete_OnProgressURL(long current, long maximum) = 0;
virtual void Obsolete_OnSetStatusText(const char *text) = 0;
virtual void Obsolete_OnUpdate() = 0;
virtual void Obsolete_OnLink() = 0;
virtual void Obsolete_OffLink() = 0;
// call backs for events
// when the top level browser is changing the page they are looking at (not
// sub iframes or the like loading)
virtual void OnURLChanged(const char *url, const char *pchPostData,
bool bIsRedirect) = 0;
// the control has finished loading a request, could be a sub request in the
// page
virtual void OnFinishRequest(const char *url, const char *pageTitle) = 0;
// the lower html control wants to load a url, do we allow it?
virtual bool OnStartRequestInternal(const char *url, const char *target,
const char *pchPostData,
bool bIsRedirect) = 0;
// show a popup menu for this html control
virtual void ShowPopup(int x, int y, int wide, int tall) = 0;
// hide any popup menu you are showing
virtual void HidePopup() = 0;
// show an external html window at this position and side
virtual bool OnPopupHTMLWindow(const char *pchURL, int x, int y, int wide,
int tall) = 0;
// the browser is telling us the title it would like us to show
virtual void SetHTMLTitle(const char *pchTitle) = 0;
// the browser is loading a sub url for a page, usually an image or css
virtual void OnLoadingResource(const char *pchURL) = 0;
// the browser is telling us the user is hovering a url or the like
virtual void OnSetStatusText(const char *text) = 0;
// the browser wants the cursor changed please
virtual void OnSetCursor(vgui::CursorCode cursor) = 0;
// the browser wants to ask the user to select a local file and tell it
// about it
virtual void OnFileLoadDialog(const char *pchTitle,
const char *pchInitialFile) = 0;
// show and hide tooltip text
virtual void OnShowToolTip(const char *pchText) = 0;
virtual void OnUpdateToolTip(const char *pchText) = 0;
virtual void OnHideToolTip() = 0;
// IE only code
virtual bool BOnCreateNewWindow(void **ppDispatch) = 0;
virtual void OnLink() = 0;
virtual void OffLink() = 0;
virtual void OnCloseWindow() = 0;
virtual void OnUpdate() = 0;
virtual void OnProgressRequest(long current, long maximum) = 0;
// new Chrome calls
virtual bool OnOpenNewTab(const char *pchURL, bool bForeground) = 0;
};
} // namespace vgui
#endif // IHTML_H