PolyScreen.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * PolyScreen.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/13/08.
  6. * Copyright 2008 Ivan Safrin. All rights reserved.
  7. *
  8. */
  9. // @package Screen
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyScreenEntity.h"
  14. #include "PolyRenderer.h"
  15. #include "PolyInputEvent.h"
  16. #include "PolyCoreServices.h"
  17. #include <vector>
  18. #include <algorithm>
  19. #include "PolyScreenEvent.h"
  20. using namespace std;
  21. namespace Polycode {
  22. class _PolyExport Screen : public EventDispatcher {
  23. public:
  24. Screen();
  25. ~Screen();
  26. ScreenEntity* addChild(ScreenEntity *newEntity);
  27. ScreenEntity* removeChild(ScreenEntity *entityToRemove);
  28. void setScreenOffset(Number x, Number y);
  29. Vector2 getScreenOffset();
  30. virtual void Shutdown();
  31. virtual void Update();
  32. ScreenEntity *getEntityAt(Number x, Number y);
  33. void Render();
  34. void setRenderer(Renderer *renderer);
  35. void setNormalizedCoordinates(bool newVal, Number yCoordinateSize = 1.0f);
  36. void setScreenShader(String shaderName);
  37. void handleEvent(Event *event);
  38. int getHighestZIndex();
  39. void sortChildren();
  40. static bool cmpZindex(const ScreenEntity *left, const ScreenEntity *right);
  41. void handleInputEvent(InputEvent *inputEvent);
  42. bool hasFilterShader();
  43. void drawFilter();
  44. bool usesNormalizedCoordinates() { return useNormalizedCoordinates; }
  45. Number getYCoordinateSize() { return yCoordinateSize; }
  46. ScreenEntity *getRootEntity() { return rootEntity; }
  47. bool enabled;
  48. protected:
  49. bool useNormalizedCoordinates;
  50. Number yCoordinateSize;
  51. ScreenEntity *rootEntity;
  52. Vector2 offset;
  53. Renderer *renderer;
  54. ScreenEntity *focusChild;
  55. vector <ScreenEntity*> children;
  56. Material *filterShaderMaterial;
  57. Texture *originalSceneTexture;
  58. Texture *zBufferSceneTexture;
  59. vector<ShaderBinding*> localShaderOptions;
  60. bool _hasFilterShader;
  61. };
  62. }