gosu 0.7.50 → 0.8.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecfaaac88bd71ec3192882427d272cab04134386
4
- data.tar.gz: 734cf005cff5cadb1f8c446079d87c406b5235d7
3
+ metadata.gz: 44a9c34018bb68377bbebea3d2b032802164035f
4
+ data.tar.gz: c54379a8fc21c22f1134e25fcab64eb86b03affb
5
5
  SHA512:
6
- metadata.gz: 9c936efca2c7b7924a151c35d6b2eafd3d4d02bec49cef0e0f63d1fb30fc650aaddc248ef0ed45938baa58f9fbcbe06bdd923aaf09668c85b98fe447dfa35999
7
- data.tar.gz: 2fe577e9f04ad56536e10b7c58781f8e95417af937baa4bd96400f06b59611b6fc4d0f0278db12b1fc7d57496b13139646ec629c274f8493ef758ab44f6cf2ca
6
+ metadata.gz: 1097c5da7679685396bbd3dafa24ad914813a025277ad110b039a9ae8d8b70cae79b5188d3def18e08b5a668c0c32102d303957f3163c7ee3730069bf9ce795c
7
+ data.tar.gz: 47e91556e91d55cead8de660b37c621ab40a5f712f6047147f4424fce9b55f069a94b5c2b3eb6d378b1aee95139d7b82df5724789b7fc4cfd68129ffd4f67cd9
data/COPYING CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (C) 2004-2013 Julian Raschke, Jan Lücker and all contributors.
1
+ Copyright (C) 2001-2014 Julian Raschke, Jan Lücker and all contributors.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a
4
4
  copy of this software and associated documentation files (the "Software"),
@@ -23,103 +23,103 @@ namespace Gosu
23
23
  enum ButtonName
24
24
  {
25
25
  kbRangeBegin,
26
- kbEscape = GOSU_SCANCODE(0x35, 0x01),
27
- kbF1 = GOSU_SCANCODE(0x7a, 0x3b),
28
- kbF2 = GOSU_SCANCODE(0x78, 0x3c),
29
- kbF3 = GOSU_SCANCODE(0x63, 0x3d),
30
- kbF4 = GOSU_SCANCODE(0x76, 0x3e),
31
- kbF5 = GOSU_SCANCODE(0x60, 0x3f),
32
- kbF6 = GOSU_SCANCODE(0x61, 0x40),
33
- kbF7 = GOSU_SCANCODE(0x62, 0x41),
34
- kbF8 = GOSU_SCANCODE(0x64, 0x42),
35
- kbF9 = GOSU_SCANCODE(0x65, 0x43),
36
- kbF10 = GOSU_SCANCODE(0x6d, 0x44),
37
- kbF11 = GOSU_SCANCODE(0x67, 0x57),
38
- kbF12 = GOSU_SCANCODE(0x6f, 0x58),
39
- kb0 = GOSU_SCANCODE(0x1d, 0x0b),
40
- kb1 = GOSU_SCANCODE(0x12, 0x02),
41
- kb2 = GOSU_SCANCODE(0x13, 0x03),
42
- kb3 = GOSU_SCANCODE(0x14, 0x04),
43
- kb4 = GOSU_SCANCODE(0x15, 0x05),
44
- kb5 = GOSU_SCANCODE(0x17, 0x06),
45
- kb6 = GOSU_SCANCODE(0x16, 0x07),
46
- kb7 = GOSU_SCANCODE(0x1a, 0x08),
47
- kb8 = GOSU_SCANCODE(0x1c, 0x09),
48
- kb9 = GOSU_SCANCODE(0x19, 0x0a),
49
- kbTab = GOSU_SCANCODE(0x30, 0x0f),
50
- kbReturn = GOSU_SCANCODE(0x24, 0x1c),
51
- kbSpace = GOSU_SCANCODE(0x31, 0x39),
52
- kbLeftShift = GOSU_SCANCODE(0x38, 0x2a),
53
- kbRightShift = GOSU_SCANCODE(0x3c, 0x36),
54
- kbLeftControl = GOSU_SCANCODE(0x3b, 0x1d),
55
- kbRightControl = GOSU_SPECIAL_SCANCODE(0x3e, 0x9d, 0x61),
56
- kbLeftAlt = GOSU_SCANCODE(0x3a, 0x38),
57
- kbRightAlt = GOSU_SPECIAL_SCANCODE(0x3d, 0xb8, 0x64),
58
- kbLeftMeta = GOSU_SPECIAL_SCANCODE(0x37, 0xdb, 0x7d),
59
- kbRightMeta = GOSU_SPECIAL_SCANCODE(0x36, 0xdc, 0x7e),
60
- kbBackspace = GOSU_SCANCODE(0x33, 0x0e),
61
- kbLeft = GOSU_SPECIAL_SCANCODE(0x7b, 0xcb, 0x69),
62
- kbRight = GOSU_SPECIAL_SCANCODE(0x7c, 0xcd, 0x6a),
63
- kbUp = GOSU_SPECIAL_SCANCODE(0x7e, 0xc8, 0x67),
64
- kbDown = GOSU_SPECIAL_SCANCODE(0x7d, 0xd0, 0x6c),
65
- kbHome = GOSU_SPECIAL_SCANCODE(0x73, 0xc7, 0x66),
66
- kbEnd = GOSU_SPECIAL_SCANCODE(0x77, 0xcf, 0x6b),
67
- kbInsert = GOSU_SPECIAL_SCANCODE(0x72, 0xd2, 0x6e),
68
- kbDelete = GOSU_SPECIAL_SCANCODE(0x75, 0xd3, 0x6f),
69
- kbPageUp = GOSU_SPECIAL_SCANCODE(0x74, 0xc9, 0x68),
70
- kbPageDown = GOSU_SPECIAL_SCANCODE(0x79, 0xd1, 0x6d),
71
- kbEnter = GOSU_SPECIAL_SCANCODE(0x4c, 0x9c, 0x60),
72
- kbBacktick = GOSU_SCANCODE(0x32, 0x29),
73
- kbMinus = GOSU_SCANCODE(0x1b, 0x0c),
74
- kbEqual = GOSU_SCANCODE(0x18, 0x0d),
75
- kbBracketLeft = GOSU_SCANCODE(0x21, 0x1a),
76
- kbBracketRight = GOSU_SCANCODE(0x1e, 0x1b),
77
- kbBackslash = GOSU_SCANCODE(0x2a, 0x2b),
78
- kbSemicolon = GOSU_SCANCODE(0x29, 0x27),
79
- kbApostrophe = GOSU_SCANCODE(0x27, 0x28),
80
- kbComma = GOSU_SCANCODE(0x2b, 0x33),
81
- kbPeriod = GOSU_SCANCODE(0x2f, 0x34),
82
- kbSlash = GOSU_SCANCODE(0x2c, 0x35),
83
- kbA = GOSU_SCANCODE(0x00, 0x1e),
84
- kbB = GOSU_SCANCODE(0x0b, 0x30),
85
- kbC = GOSU_SCANCODE(0x08, 0x2e),
86
- kbD = GOSU_SCANCODE(0x02, 0x20),
87
- kbE = GOSU_SCANCODE(0x0e, 0x12),
88
- kbF = GOSU_SCANCODE(0x03, 0x21),
89
- kbG = GOSU_SCANCODE(0x05, 0x22),
90
- kbH = GOSU_SCANCODE(0x04, 0x23),
91
- kbI = GOSU_SCANCODE(0x22, 0x17),
92
- kbJ = GOSU_SCANCODE(0x26, 0x24),
93
- kbK = GOSU_SCANCODE(0x28, 0x25),
94
- kbL = GOSU_SCANCODE(0x25, 0x26),
95
- kbM = GOSU_SCANCODE(0x2e, 0x32),
96
- kbN = GOSU_SCANCODE(0x2d, 0x31),
97
- kbO = GOSU_SCANCODE(0x1f, 0x18),
98
- kbP = GOSU_SCANCODE(0x23, 0x19),
99
- kbQ = GOSU_SCANCODE(0x0c, 0x10),
100
- kbR = GOSU_SCANCODE(0x0f, 0x13),
101
- kbS = GOSU_SCANCODE(0x01, 0x1f),
102
- kbT = GOSU_SCANCODE(0x11, 0x14),
103
- kbU = GOSU_SCANCODE(0x20, 0x16),
104
- kbV = GOSU_SCANCODE(0x09, 0x2f),
105
- kbW = GOSU_SCANCODE(0x0d, 0x11),
106
- kbX = GOSU_SCANCODE(0x07, 0x2d),
107
- kbY = GOSU_SCANCODE(0x10, 0x15),
108
- kbZ = GOSU_SCANCODE(0x06, 0x2c),
109
- kbNumpad0 = GOSU_SCANCODE(0x52, 0x52),
110
- kbNumpad1 = GOSU_SCANCODE(0x53, 0x4f),
111
- kbNumpad2 = GOSU_SCANCODE(0x54, 0x50),
112
- kbNumpad3 = GOSU_SCANCODE(0x55, 0x51),
113
- kbNumpad4 = GOSU_SCANCODE(0x56, 0x4b),
114
- kbNumpad5 = GOSU_SCANCODE(0x57, 0x4c),
115
- kbNumpad6 = GOSU_SCANCODE(0x58, 0x4d),
116
- kbNumpad7 = GOSU_SCANCODE(0x59, 0x47),
117
- kbNumpad8 = GOSU_SCANCODE(0x5b, 0x48),
118
- kbNumpad9 = GOSU_SCANCODE(0x5c, 0x49),
119
- kbNumpadAdd = GOSU_SCANCODE(0x45, 0x4e),
120
- kbNumpadSubtract = GOSU_SCANCODE(0x4e, 0x4a),
121
- kbNumpadMultiply = GOSU_SCANCODE(0x43, 0x37),
122
- kbNumpadDivide = GOSU_SCANCODE(0x4b, 0xb5),
26
+ kbEscape = 41,
27
+ kbF1 = 58,
28
+ kbF2 = 59,
29
+ kbF3 = 60,
30
+ kbF4 = 61,
31
+ kbF5 = 62,
32
+ kbF6 = 63,
33
+ kbF7 = 64,
34
+ kbF8 = 65,
35
+ kbF9 = 66,
36
+ kbF10 = 67,
37
+ kbF11 = 68,
38
+ kbF12 = 69,
39
+ kb0 = 30,
40
+ kb1 = 31,
41
+ kb2 = 32,
42
+ kb3 = 33,
43
+ kb4 = 34,
44
+ kb5 = 35,
45
+ kb6 = 36,
46
+ kb7 = 37,
47
+ kb8 = 38,
48
+ kb9 = 39,
49
+ kbTab = 43,
50
+ kbReturn = 40,
51
+ kbSpace = 44,
52
+ kbLeftShift = 225,
53
+ kbRightShift = 229,
54
+ kbLeftControl = 224,
55
+ kbRightControl = 228,
56
+ kbLeftAlt = 226,
57
+ kbRightAlt = 230,
58
+ kbLeftMeta = 227,
59
+ kbRightMeta = 231,
60
+ kbBackspace = 42,
61
+ kbLeft = 80,
62
+ kbRight = 79,
63
+ kbUp = 82,
64
+ kbDown = 81,
65
+ kbHome = 74,
66
+ kbEnd = 77,
67
+ kbInsert = 73,
68
+ kbDelete = 76,
69
+ kbPageUp = 75,
70
+ kbPageDown = 78,
71
+ kbEnter = 88,
72
+ kbBacktick = 53,
73
+ kbMinus = 45,
74
+ kbEqual = 46, // TODO: Rename ->kbEquals
75
+ kbBracketLeft = 47, // TODO: Rename ->kbLeftBracket
76
+ kbBracketRight = 48, // TODO: Rename ->kbRightBracket
77
+ kbBackslash = 49,
78
+ kbSemicolon = 51,
79
+ kbApostrophe = 52,
80
+ kbComma = 54,
81
+ kbPeriod = 55,
82
+ kbSlash = 49,
83
+ kbA = 4,
84
+ kbB = 5,
85
+ kbC = 6,
86
+ kbD = 7,
87
+ kbE = 8,
88
+ kbF = 9,
89
+ kbG = 10,
90
+ kbH = 11,
91
+ kbI = 12,
92
+ kbJ = 13,
93
+ kbK = 14,
94
+ kbL = 15,
95
+ kbM = 16,
96
+ kbN = 17,
97
+ kbO = 18,
98
+ kbP = 19,
99
+ kbQ = 20,
100
+ kbR = 21,
101
+ kbS = 22,
102
+ kbT = 23,
103
+ kbU = 24,
104
+ kbV = 25,
105
+ kbW = 26,
106
+ kbX = 27,
107
+ kbY = 28,
108
+ kbZ = 29,
109
+ kbNumpad0 = 98,
110
+ kbNumpad1 = 89,
111
+ kbNumpad2 = 90,
112
+ kbNumpad3 = 91,
113
+ kbNumpad4 = 92,
114
+ kbNumpad5 = 93,
115
+ kbNumpad6 = 94,
116
+ kbNumpad7 = 95,
117
+ kbNumpad8 = 96,
118
+ kbNumpad9 = 97,
119
+ kbNumpadAdd = 87, // TODO: Rename ->kbNumpadPlus
120
+ kbNumpadSubtract = 86, // TODO: Rename ->kbNumpadMinus
121
+ kbNumpadMultiply = 85,
122
+ kbNumpadDivide = 84,
123
123
  kbRangeEnd = 0xff,
124
124
 
125
125
  msRangeBegin,
@@ -23,26 +23,6 @@ namespace Gosu
23
23
  //! Useful when extending Gosu using OpenGL.
24
24
  unsigned const MAX_TEXTURE_SIZE = 1024;
25
25
 
26
- #ifdef GOSU_IS_MAC
27
- // TODO: Without this gigantic hack, Gosu crashes in the "scale" function,
28
- // but _only_ when used from Ruby 1.9. It is unclear what might cause this -
29
- // maybe a compiler bug that tries to use SSE functions with the wrong
30
- // alignment. Adding __attribute__((aligned(16))) does not help, though.
31
- struct Transform
32
- {
33
- double value[16];
34
- bool operator==(const Transform &other) { for (int i = 0; i < 16; ++i) if ((*this)[i] != other[i]) return false; return true; }
35
- const double &operator[](std::size_t idx) const { return value[idx]; }
36
- double &operator[](std::size_t idx) { return value[idx]; }
37
- };
38
- #else
39
- typedef std::tr1::array<double, 16> Transform;
40
- #endif
41
- Transform translate(double x, double y);
42
- Transform rotate(double angle, double aroundX = 0, double aroundY = 0);
43
- Transform scale(double factor);
44
- Transform scale(double factorX, double factorY, double fromX = 0, double fromY = 0);
45
-
46
26
  //! Serves as the target of all drawing and provides primitive drawing
47
27
  //! functionality.
48
28
  //! Usually created internally by Gosu::Window.
@@ -51,21 +31,21 @@ namespace Gosu
51
31
  struct Impl;
52
32
  const GOSU_UNIQUE_PTR<Impl> pimpl;
53
33
 
54
- #if defined(GOSU_CPP11_ENABLED)
34
+ #if defined(GOSU_CPP11_ENABLED)
55
35
  // explicitly forbid copying and moving
56
36
  Graphics(Graphics&&) = delete;
57
37
  Graphics& operator=(Graphics&&) = delete;
58
38
  Graphics(const Graphics&) = delete;
59
39
  Graphics& operator=(const Graphics&) = delete;
60
- #endif
40
+ #endif
61
41
 
62
42
  public:
63
43
  Graphics(unsigned physicalWidth, unsigned physicalHeight, bool fullscreen);
64
44
  ~Graphics();
65
45
 
66
- // Undocumented until I have thought about this...
67
- void setResolution(unsigned virtualWidth, unsigned virtualHeight);
68
- // End of Undocumented
46
+ // TODO: Replace by setBaseTransform()
47
+ void setResolution(unsigned virtualWidth, unsigned virtualHeight,
48
+ double horizontalBlackBarWidth = 0, double verticalBlackBarHeight = 0);
69
49
 
70
50
  unsigned width() const;
71
51
  unsigned height() const;
@@ -85,7 +65,6 @@ namespace Gosu
85
65
  void beginGL();
86
66
  //! Resets Gosu into its default rendering state.
87
67
  void endGL();
88
- //! (Experimental)
89
68
  //! Schedules a custom GL functor to be executed at a certain Z level.
90
69
  //! The functor is called in a clean GL context (as given by beginGL/endGL).
91
70
  //! Gosu's rendering up to the Z level may not yet have been glFlush()ed.
@@ -5,6 +5,7 @@
5
5
  #define GOSU_GRAPHICSBASE_HPP
6
6
 
7
7
  #include <Gosu/Platform.hpp>
8
+ #include <Gosu/TR1.hpp>
8
9
  #include <limits>
9
10
 
10
11
  namespace Gosu
@@ -76,12 +77,34 @@ namespace Gosu
76
77
  bfTileableRight = 4,
77
78
  bfTileableBottom = 8,
78
79
  bfTileable = bfTileableLeft | bfTileableTop | bfTileableRight | bfTileableBottom
79
- };
80
+ };
80
81
 
81
- #ifndef SWIG
82
- // A not so useful optimization.
82
+ #ifdef GOSU_IS_MAC
83
+ // TODO: Without this gigantic hack, Gosu crashes in the "scale" function,
84
+ // but _only_ when used from Ruby 1.9. It is unclear what might cause this -
85
+ // maybe a compiler bug that tries to use SSE functions with the wrong
86
+ // alignment. Adding __attribute__((aligned(16))) does not help, though.
87
+ struct Transform
88
+ {
89
+ double value[16];
90
+ bool operator==(const Transform &other) { for (int i = 0; i < 16; ++i) if ((*this)[i] != other[i]) return false; return true; }
91
+ const double &operator[](std::size_t idx) const { return value[idx]; }
92
+ double &operator[](std::size_t idx) { return value[idx]; }
93
+ };
94
+ #else
95
+ typedef std::tr1::array<double, 16> Transform;
96
+ #endif
97
+ Transform translate(double x, double y);
98
+ Transform rotate(double angle, double aroundX = 0, double aroundY = 0);
99
+ Transform scale(double factor);
100
+ Transform scale(double factorX, double factorY, double fromX = 0, double fromY = 0);
101
+ Transform concat(const Transform& lhs, const Transform& rhs);
102
+
103
+ #ifndef SWIG
104
+ // A not so useful optimization - this was supposed to bypass the Z queue for immediate rendering.
105
+ // In retrospect, the only useful optimization would be to work down the Z queue on a second thread.
83
106
  GOSU_DEPRECATED const double zImmediate = -std::numeric_limits<double>::infinity();
84
- #endif
107
+ #endif
85
108
  }
86
109
 
87
110
  #endif
@@ -76,33 +76,22 @@ namespace Gosu
76
76
  {
77
77
  struct Impl;
78
78
  const GOSU_UNIQUE_PTR<Impl> pimpl;
79
- #if defined(GOSU_CPP11_ENABLED)
79
+ #if defined(GOSU_CPP11_ENABLED)
80
80
  // explicitly forbid copying and moving
81
81
  Input(Input&&) = delete;
82
82
  Input& operator=(Input&&) = delete;
83
83
  Input(const Input&) = delete;
84
84
  Input& operator=(const Input&) = delete;
85
- #endif
85
+ #endif
86
86
 
87
87
  public:
88
- #ifdef GOSU_IS_WIN
89
- Input(HWND window);
90
- #endif
91
-
92
- #ifdef GOSU_IS_MAC
93
- #ifdef GOSU_IS_IPHONE
88
+ #ifdef GOSU_IS_IPHONE
94
89
  Input(void* view, float updateInterval);
95
90
  void feedTouchEvent(int type, void* touches);
96
- #else
97
- Input(void* window);
98
- bool feedNSEvent(void* event);
99
- #endif
100
- #endif
101
-
102
- #ifdef GOSU_IS_X
103
- Input(::Display* display, ::Window window);
104
- bool feedXEvent(::XEvent& event);
105
- #endif
91
+ #else
92
+ Input();
93
+ bool feedSDLEvent(void* event);
94
+ #endif
106
95
 
107
96
  ~Input();
108
97
 
@@ -128,7 +117,7 @@ namespace Gosu
128
117
  void setMousePosition(double x, double y);
129
118
 
130
119
  // Undocumented for the moment. Also applies to currentTouches().
131
- void setMouseFactors(double factorX, double factorY);
120
+ void setMouseFactors(double factorX, double factorY, double offsetX = 0, double offsetY = 0);
132
121
 
133
122
  //! Currently known touches.
134
123
  const Touches& currentTouches() const;
@@ -62,8 +62,12 @@ namespace Gosu
62
62
  # endif
63
63
  #endif
64
64
 
65
+ #if defined (GOSU_IS_IPHONE) || defined(__arm__)
66
+ # define GOSU_IS_OPENGLES
67
+ #endif
68
+
65
69
  #ifndef SWIG
66
- # if (defined(_MSC_VER) && _MSC_VER >= 1700) || ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__GXX_EXPERIMENTAL_CXX0X__))
70
+ # if _MSC_VER >= 1700 || ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__GXX_EXPERIMENTAL_CXX0X__))
67
71
  # define GOSU_CPP11_ENABLED
68
72
  # endif
69
73
  #endif
@@ -24,12 +24,12 @@ namespace Gosu
24
24
  {
25
25
  struct Impl;
26
26
  const GOSU_UNIQUE_PTR<Impl> pimpl;
27
- #if defined(GOSU_CPP11_ENABLED)
27
+ #if defined(GOSU_CPP11_ENABLED)
28
28
  TextInput(TextInput&&) = delete;
29
29
  TextInput& operator=(TextInput&&) = delete;
30
30
  TextInput(const TextInput&) = delete;
31
31
  TextInput& operator=(const TextInput&) = delete;
32
- #endif
32
+ #endif
33
33
 
34
34
  public:
35
35
  TextInput();
@@ -55,20 +55,14 @@ namespace Gosu
55
55
  void setSelectionStart(unsigned pos);
56
56
 
57
57
  // Platform-specific communication with Gosu::Input.
58
- #if defined(GOSU_IS_MAC)
59
- bool feedNSEvent(void* event);
60
- #elif defined(GOSU_IS_WIN)
61
- bool feedMessage(unsigned long message, unsigned long wparam, unsigned long lparam);
62
- #elif defined(GOSU_IS_X)
63
- bool feedXEvent(void* display, void* event);
64
- #endif
58
+ bool feedSDLEvent(void* event);
65
59
 
66
60
  //! Overridable filter that is applied to all new text that is entered.
67
61
  //! Allows for context-sensitive filtering/extending/... of the text.
68
62
  //! The text will be inserted at caretPos afterwards.
69
- virtual std::wstring filter(const std::wstring& textIn) const
63
+ virtual std::wstring filter(const std::wstring& text) const
70
64
  {
71
- return textIn;
65
+ return text;
72
66
  }
73
67
  };
74
68
  }
@@ -2,9 +2,9 @@
2
2
  #define GOSU_VERSION_HPP
3
3
 
4
4
  #define GOSU_MAJOR_VERSION 0
5
- #define GOSU_MINOR_VERSION 7
6
- #define GOSU_POINT_VERSION 50
7
- #define GOSU_VERSION "0.7.50"
5
+ #define GOSU_MINOR_VERSION 8
6
+ #define GOSU_POINT_VERSION 0
7
+ #define GOSU_VERSION "0.8.0.pre1"
8
8
 
9
9
  #define GOSU_COPYRIGHT_NOTICE \
10
10
  " " \
@@ -16,6 +16,8 @@
16
16
  #include <OpenGLES/ES1/glext.h>
17
17
  #elif defined(GOSU_IS_MAC)
18
18
  #include <OpenGL/gl.h>
19
+ #elif defined GOSU_IS_OPENGLES
20
+ #include <GLES/gl.h>
19
21
  #else
20
22
  #include <GL/gl.h>
21
23
  #endif
@@ -85,17 +87,6 @@ namespace Gosu
85
87
  }
86
88
  }
87
89
 
88
- inline Transform multiply(const Transform& left, const Transform& right)
89
- {
90
- Gosu::Transform result;
91
- for (int i = 0; i < 16; ++i) {
92
- result[i] = 0;
93
- for (int j = 0; j < 4; ++j)
94
- result[i] += left[i / 4 * 4 + j] * right[i % 4 + j * 4];
95
- }
96
- return result;
97
- }
98
-
99
90
  template<typename Float>
100
91
  void applyTransform(const Transform& transform, Float& x, Float& y)
101
92
  {