cursor.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. //
  4. //
  5. //////////////////////////////////////////////////////////////////////////////
  6. #include "pch.h"
  7. //////////////////////////////////////////////////////////////////////////////
  8. //
  9. //
  10. //
  11. //////////////////////////////////////////////////////////////////////////////
  12. class CursorSurfaceSite : public SurfaceSite {
  13. public:
  14. void UpdateSurface(Surface* psurface)
  15. {
  16. const Color& color = Color::White();
  17. const WinPoint& size = psurface->GetSize();
  18. int x = size.X();
  19. int y = size.Y();
  20. psurface->FillSurface(Color::Black());
  21. psurface->FillRect(WinRect( 0, y / 2 - 1, x / 2 - 2, y / 2 + 1), color);
  22. psurface->FillRect(WinRect(x / 2 + 2, y / 2 - 1, x, y / 2 + 1), color);
  23. psurface->FillRect(WinRect(x / 2 - 1, 0, x / 2 + 1, y / 2 - 2), color);
  24. psurface->FillRect(WinRect(x / 2 - 1, y / 2 + 2, x / 2 + 1, y), color);
  25. }
  26. };
  27. //////////////////////////////////////////////////////////////////////////////
  28. //
  29. //
  30. //
  31. //////////////////////////////////////////////////////////////////////////////
  32. TRef<Image> CreateCursor(Engine* pengine)
  33. {
  34. volatile float size = 16;
  35. TRef<Surface> psurfaceCursor =
  36. pengine->CreateSurface(
  37. WinPoint(int(size), int(size)),
  38. SurfaceType2D(),
  39. new CursorSurfaceSite()
  40. );
  41. psurfaceCursor->SetColorKey(Color::Black());
  42. return
  43. new TransformImage(
  44. new ConstantImage(
  45. psurfaceCursor,
  46. ZString("cursor")
  47. ),
  48. new TranslateTransform2(
  49. new PointValue(
  50. Point(-(size / 2), -(size / 2))
  51. )
  52. )
  53. );
  54. }