mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-23 14:46:53 +00:00
122 lines
3.8 KiB
C++
122 lines
3.8 KiB
C++
//=========== Copyright Valve Corporation, All rights reserved. ===============//
|
|
//
|
|
// Purpose:
|
|
//=============================================================================//
|
|
|
|
#ifndef PANORAMA_IMAGEPANEL_H
|
|
#define PANORAMA_IMAGEPANEL_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "panel2d.h"
|
|
#include "../data/iimagesource.h"
|
|
|
|
namespace panorama
|
|
{
|
|
|
|
DECLARE_PANEL_EVENT1( SetImageSource, const char * );
|
|
DECLARE_PANEL_EVENT0( ClearImageSource );
|
|
enum EImageScaling
|
|
{
|
|
k_EImageScalingNone,
|
|
k_EImageScalingStretchBoth,
|
|
k_EImageScalingStretchX,
|
|
k_EImageScalingStretchY,
|
|
k_EImageScalingStretchBothToFitPreserveAspectRatio,
|
|
k_EImageScalingStretchXToFitPreserveAspectRatio,
|
|
k_EImageScalingStretchYToFitPreserveAspectRatio,
|
|
k_EImageScalingStretchBothToCoverPreserveAspectRatio
|
|
};
|
|
|
|
enum EImageHorizontalAlignment
|
|
{
|
|
k_EImageHorizontalAlignmentCenter,
|
|
k_EImageHorizontalAlignmentLeft,
|
|
k_EImageHorizontalAlignmentRight,
|
|
};
|
|
|
|
enum EImageVerticalAlignment
|
|
{
|
|
k_EImageVerticalAlignmentCenter,
|
|
k_EImageVerticalAlignmentTop,
|
|
k_EImageVerticalAlignmentBottom,
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: ImagePanel
|
|
//-----------------------------------------------------------------------------
|
|
class CImagePanel : public CPanel2D
|
|
{
|
|
DECLARE_PANEL2D( CImagePanel, CPanel2D );
|
|
|
|
public:
|
|
CImagePanel( CPanel2D *parent, const char * pchPanelID );
|
|
virtual ~CImagePanel();
|
|
|
|
virtual void Paint();
|
|
virtual bool BSetProperties( const CUtlVector< ParsedPanelProperty_t > &vecProperties );
|
|
|
|
bool OnImageLoaded( const CPanelPtr< IUIPanel > &pPanel, IImageSource *pImage );
|
|
bool OnSetImageSource( const CPanelPtr<IUIPanel> &pPanel, const char *pchImageSource );
|
|
bool OnClearImageSource( const CPanelPtr<IUIPanel> &pPanel );
|
|
|
|
IImageSource *GetImage() { return m_pImage; }
|
|
|
|
// Set an image from a URL (file://, http://), if pchDefaultImage is specified it must be a file:// url and will be
|
|
// used while the actual image is loaded asynchronously, it will also remain in use if the actual image fails to load
|
|
void SetImage( const char *pchImageURL, const char *pchDefaultImageURL = NULL, bool bPrioritizeLoad = false, int nResizeWidth = -1, int nResizeHeight = -1 );
|
|
|
|
// Set an image from an already created IImageSource, you should almost always use the simpler SetImage( pchImageURL, pchDefaultImageURL ) call.
|
|
void SetImage( IImageSource *pImage );
|
|
|
|
void Clear();
|
|
bool IsSet() { return (m_pImage != NULL); }
|
|
|
|
void SetScaling( EImageScaling eScale );
|
|
void SetScaling( CPanoramaSymbol symScale );
|
|
void SetAlignment( EImageHorizontalAlignment horAlign, EImageVerticalAlignment verAlign );
|
|
void SetVisibleImageSlice( int nX, int nY, int nWidth, int nHeight );
|
|
|
|
virtual void SetupJavascriptObjectTemplate() OVERRIDE;
|
|
|
|
void GetDebugPropertyInfo( CUtlVector< DebugPropertyOutput_t *> *pvecProperties );
|
|
|
|
virtual bool BRequiresContentClipLayer();
|
|
|
|
void SetImageJS( const char *pchImageURL );
|
|
|
|
virtual bool IsClonable() OVERRIDE { return AreChildrenClonable(); }
|
|
virtual CPanel2D *Clone() OVERRIDE;
|
|
|
|
#ifdef DBGFLAG_VALIDATE
|
|
virtual void ValidateClientPanel( CValidator &validator, const tchar *pchName ) OVERRIDE;
|
|
#endif
|
|
|
|
protected:
|
|
virtual void OnContentSizeTraverse( float *pflContentWidth, float *pflContentHeight, float flMaxWidth, float flMaxHeight, bool bFinalDimensions );
|
|
|
|
virtual void InitClonedPanel( CPanel2D *pPanel ) OVERRIDE;
|
|
private:
|
|
|
|
EImageScaling m_eScaling;
|
|
EImageHorizontalAlignment m_eHorAlignment;
|
|
EImageVerticalAlignment m_eVerAlignment;
|
|
int m_nVisibleSliceX;
|
|
int m_nVisibleSliceY;
|
|
int m_nVisibleSliceWidth;
|
|
int m_nVisibleSliceHeight;
|
|
CUtlString m_strSource;
|
|
CUtlString m_strSourceDefault;
|
|
bool m_bAnimate;
|
|
|
|
IImageSource *m_pImage;
|
|
float m_flPrevAnimateWidth;
|
|
float m_flPrevAnimateHeight;
|
|
};
|
|
|
|
} // namespace panorama
|
|
|
|
#endif // PANORAMA_IMAGEPANEL_H
|