| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | //-----------------------------------------------------------------------------// Copyright (c) 2012 GarageGames, LLC//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS// IN THE SOFTWARE.//-----------------------------------------------------------------------------#ifndef _GUIPARTICLEGRAPHCTRL_H_#define _GUIPARTICLEGRAPHCTRL_H_#ifndef _GUICONTROL_H_#include "gui/core/guiControl.h"#endif#ifndef _STRINGTABLE_H_#include "core/stringTable.h"#endifclass GuiParticleGraphCtrl : public GuiControl{private:	typedef GuiControl Parent;protected:   /// The color of the nuts.   ColorI            mNutColor;   /// The outline color of the nuts.   ColorI            mOutlineColor;   /// The rectangle size to check for clicks on nuts (default 8) which is RectI( pointClick - 4, pointClick - 4, 8, 8 )   S32               mVertexClickSize;   Point2I findHitNut( Point2I hitPoint );public:   enum Constants {      MaxPlots = 32,      MaxDataPoints = 200   };   enum GraphType {      Point,      Polyline,      Filled,      Bar   };   struct PlotInfo   {	  LinearColorF		  mGraphColor;	  Vector<Point2F> mGraphData;	  Vector<Point2F> mNutList;	  Point2F		  mGraphMax;	  Point2F		  mGraphMin;	  GraphType		  mGraphType;	  StringTableEntry            mGraphName;	  bool            mHidden;	  F32             mGraphScale;   };   S32          mSelectedPlot;   S32          mSelectedPoint;   S32          mOriginalSelectedPoint;   S32          mLastSelectedPoint;   S32          mTooltipSelectedPlot;   S32          mAddedPointIndex;   bool         mAutoMax;   bool         mAutoRemove;   bool         mRenderAllPoints;   bool         mPointWasAdded;   bool         mRenderGraphTooltip;   bool         mRenderNextGraphTooltip;   bool         mPointXMovementClamped;   Point2F      mAddedPoint;   Point2F      mLastMousePos;   Point2I      mCursorPos;   PlotInfo		mPlots[MaxPlots];	//creation methods   DECLARE_CONOBJECT(GuiParticleGraphCtrl);   DECLARE_CATEGORY( "Gui Editor" );      GuiParticleGraphCtrl();   virtual ~GuiParticleGraphCtrl() { };   void onMouseMove(const GuiEvent &event) override;   void onMouseDown( const GuiEvent &event ) override;   void onMouseUp( const GuiEvent &event ) override;   void onMouseDragged( const GuiEvent &event ) override;   void onRightMouseDown( const GuiEvent &event ) override;   void onRightMouseUp( const GuiEvent &event ) override;   void onRightMouseDragged( const GuiEvent &event ) override;   //Parental methods   bool onWake() override;   void onRender(Point2I offset, const RectI &updateRect) override;   bool renderGraphTooltip(Point2I cursorPos, StringTableEntry tooltip);   // Graph interface   S32 addPlotPoint(S32 plotID, Point2F v, bool setAdded = true);   void insertPlotPoint(S32 plotID, S32 i, Point2F v);   S32 changePlotPoint(S32 plotID, S32 i, Point2F v);   S32 removePlotPoint(S32 plotID, S32 i);   Point2F convertToGraphCoord(S32 plotID, Point2I v);      // Set Graph specific functions   void setGraphType(S32 plotID, const char *graphType);   void setSelectedPlot(S32 plotID);   void setSelectedPoint(S32 point);   void resetSelectedPoint();   void setGraphHidden(S32 plotID, bool isHidden);   // Set Global Options   void setAutoGraphMax(bool autoMax);   void setAutoRemove(bool autoRemove);   void setRenderAll(bool renderAll);   void setRenderGraphTooltip(bool renderGraphTooltip);   void setPointXMovementClamped(bool clamped);   // Get Functions   Point2F getGraphExtent(S32 plotID);   LinearColorF getGraphColor(S32 plotID);   S32 getSelectedPlot();   S32 getSelectedPoint();   Point2F getPlotPoint(S32 plotID, S32 samples);   S32 getPlotIndex(S32 plotID, F32 x, F32 y);   Point2F getGraphMax(S32 plotID);   Point2F getGraphMin(S32 plotID);   bool isExistingPoint(S32 plotID, S32 point);   StringTableEntry getGraphName(S32 plotID);     // Set Graph Min and MaxFunctions   void setGraphMin(S32 plotID, Point2F graphMin);   void setGraphMinX(S32 plotID, F32 graphMinX);   void setGraphMinY(S32 plotID, F32 graphMinY);   void setGraphMax(S32 plotID, Point2F graphMax);   void setGraphMaxX(S32 plotID, F32 graphMaxX);   void setGraphMaxY(S32 plotID, F32 graphMaxY);   // Other set functions for graphs   void setGraphName(S32 plotID, StringTableEntry graphName);     // Clear Functions   void clearGraph(S32 plotID);   void clearAllGraphs();   // Selection nuts.   bool inNut( const Point2I &pt, S32 x, S32 y );   void drawNut( const Point2I &nut, S32 size, ColorI &outlineColor, ColorI &nutColor );};typedef GuiParticleGraphCtrl::GraphType GuiParticleGraphType;DefineEnumType( GuiParticleGraphType );#endif
 |