summaryrefslogtreecommitdiffstats
path: root/o3d/utils
diff options
context:
space:
mode:
authorgman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-24 06:06:34 +0000
committergman@google.com <gman@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-24 06:06:34 +0000
commit9108d4c2b521e8e58bbc125787550772f585ef6c (patch)
tree2d7959d73c9545dfa19537abf04fc1e053e7c9cc /o3d/utils
parentac49d93303918e3eb99c030673432c7be876c87b (diff)
downloadchromium_src-9108d4c2b521e8e58bbc125787550772f585ef6c.zip
chromium_src-9108d4c2b521e8e58bbc125787550772f585ef6c.tar.gz
chromium_src-9108d4c2b521e8e58bbc125787550772f585ef6c.tar.bz2
Prep for moving Camera Info out of Params into JSON
I thought it was best to give you what I have so far for your input and code review instead of giving you everything all at once. This CL implements JSONObject which has a mechanism for adding stuff to be serialized as JSON to the serialization code. Since JSONObject is a serialization only object it seemed okay to put Serialize code inside. I opted to pre-declare JSONFloat and JSONOptionalFloat because I felt it made the code more error free. I had made it were you could just have JSONFloat and then with RegisterJSONValue you'd pass in optional or not but this way, declaring the field in a class makes it more explicit. CameraInfo is the first class that uses it. I'm not set on exactly how it is serialized. Whether it's as "object: { ... }" inside the "properties" section or whether it should have its own section. I think I won't know what until I actually write the deserialization code. That's not imporant for this CL This code, even if checked it, is not used yet as the import code, collada.cc, is not yet creating any of these objects. That's in another CL if you want to take a look http://codereview.chromium.org/160007 That CL will have to have lots of o3djs changes, corresponding sample changes and corresponding selenium test changes. Review URL: http://codereview.chromium.org/160008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21515 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/utils')
-rw-r--r--o3d/utils/cross/math_gtest.cc119
-rw-r--r--o3d/utils/cross/math_gtest.h71
-rw-r--r--o3d/utils/cross/math_gtest_test.cc70
3 files changed, 260 insertions, 0 deletions
diff --git a/o3d/utils/cross/math_gtest.cc b/o3d/utils/cross/math_gtest.cc
new file mode 100644
index 0000000..0f7cc90d
--- /dev/null
+++ b/o3d/utils/cross/math_gtest.cc
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// This file defines the some helper for gtest for the math library used by O3D.
+
+#include "utils/cross/math_gtest.h"
+#include "core/cross/types.h"
+
+
+namespace Vectormath {
+namespace Aos {
+
+bool operator==(const Vector4& left, const Vector4& right) {
+ return left[0] == right[0] && left[1] == right[1] && left[2] == right[2] &&
+ left[3] == right[3];
+}
+
+bool operator!=(const Vector4& left, const Vector4& right) {
+ return !(left == right);
+}
+
+bool operator==(const Matrix4& left, const Matrix4& right) {
+ return left[0] == right[0] && left[1] == right[1] && left[2] == right[2] &&
+ left[3] == right[3];
+}
+
+bool operator!=(const Matrix4& left, const Matrix4& right) {
+ return !(left == right);
+}
+
+std::ostream& operator<<(std::ostream& stream, const Vector4& value) {
+ stream << "{" << value[0] << ", " << value[1] << ", " << value[2] << ", "
+ << value[3] << "}";
+ return stream;
+}
+
+std::ostream& operator<<(std::ostream& stream, const Matrix4& value) {
+ stream << "{" << value[0] << ", " << value[1] << ", " << value[2] << ", "
+ << value[3] << "}";
+ return stream;
+}
+
+} // namespace Aos
+} // namespace Vectormath
+
+namespace o3d {
+
+bool operator==(const Float2& left, const Float2& right) {
+ return left[0] == right[0] && left[1] == right[1];
+}
+
+bool operator!=(const Float2& left, const Float2& right) {
+ return !(left == right);
+}
+
+bool operator==(const Float3& left, const Float3& right) {
+ return left[0] == right[0] && left[1] == right[1] && left[2] == right[2];
+}
+
+bool operator!=(const Float3& left, const Float3& right) {
+ return !(left == right);
+}
+
+bool operator==(const Float4& left, const Float4& right) {
+ return left[0] == right[0] && left[1] == right[1] && left[2] == right[2] &&
+ left[3] == right[3];
+}
+
+bool operator!=(const Float4& left, const Float4& right) {
+ return !(left == right);
+}
+
+std::ostream& operator<<(std::ostream& stream, const Float2& value) {
+ stream << "{" << value[0] << ", " << value[1] << "}";
+ return stream;
+}
+
+std::ostream& operator<<(std::ostream& stream, const Float3& value) {
+ stream << "{" << value[0] << ", " << value[1] << ", " << value[2] << "}";
+ return stream;
+}
+
+std::ostream& operator<<(std::ostream& stream, const Float4& value) {
+ stream << "{" << value[0] << ", " << value[1] << ", " << value[2] << ", "
+ << value[3] << "}";
+ return stream;
+}
+
+} // namespace o3d
+
+
diff --git a/o3d/utils/cross/math_gtest.h b/o3d/utils/cross/math_gtest.h
new file mode 100644
index 0000000..08ce096
--- /dev/null
+++ b/o3d/utils/cross/math_gtest.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// This file declares the some helper for gtest for the math library used by
+// O3D.
+
+#ifndef O3D_UTILS_CROSS_MATH_GTEST_H_
+#define O3D_UTILS_CROSS_MATH_GTEST_H_
+
+#include <ostream> // NOLINT
+
+namespace Vectormath {
+namespace Aos {
+class Vector4;
+class Matrix4;
+
+bool operator==(const Vector4& left, const Vector4& right);
+bool operator!=(const Vector4& left, const Vector4& right);
+bool operator==(const Matrix4& left, const Matrix4& right);
+bool operator!=(const Matrix4& left, const Matrix4& right);
+std::ostream& operator<<(std::ostream& stream, const Vector4& value);
+std::ostream& operator<<(std::ostream& stream, const Matrix4& value);
+}
+}
+
+namespace o3d {
+class Float2;
+class Float3;
+class Float4;
+
+bool operator==(const Float2& left, const Float2& right);
+bool operator!=(const Float2& left, const Float2& right);
+bool operator==(const Float3& left, const Float3& right);
+bool operator!=(const Float3& left, const Float3& right);
+bool operator==(const Float4& left, const Float4& right);
+bool operator!=(const Float4& left, const Float4& right);
+std::ostream& operator<<(std::ostream& stream, const Float2& value);
+std::ostream& operator<<(std::ostream& stream, const Float3& value);
+std::ostream& operator<<(std::ostream& stream, const Float4& value);
+}
+
+#endif // O3D_UTILS_CROSS_MATH_GTEST_H_
+
diff --git a/o3d/utils/cross/math_gtest_test.cc b/o3d/utils/cross/math_gtest_test.cc
new file mode 100644
index 0000000..a0e4f00
--- /dev/null
+++ b/o3d/utils/cross/math_gtest_test.cc
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests/common/win/testing_common.h"
+#include "utils/cross/math_gtest.h"
+
+namespace o3d {
+
+class MathGTestTest : public testing::Test {
+};
+
+// Test the math gtest helper functions.
+TEST_F(MathGTestTest, TestMathGTest) {
+ EXPECT_EQ(Float2(1.2f, 2.3f), Float2(1.2f, 2.3f));
+ EXPECT_NE(Float2(1.2f, 2.3f), Float2(1.3f, 2.3f));
+ EXPECT_NE(Float2(1.2f, 2.3f), Float2(1.2f, 2.4f));
+ EXPECT_EQ(Float3(1.2f, 2.3f, 4.5f), Float3(1.2f, 2.3f, 4.5f));
+ EXPECT_NE(Float3(1.2f, 2.3f, 4.5f), Float3(1.3f, 2.3f, 4.5f));
+ EXPECT_NE(Float3(1.2f, 2.3f, 4.5f), Float3(1.2f, 2.4f, 4.5f));
+ EXPECT_NE(Float3(1.2f, 2.3f, 4.5f), Float3(1.2f, 2.3f, 4.6f));
+ EXPECT_EQ(Float4(1.2f, 2.3f, 4.5f, 6.7f), Float4(1.2f, 2.3f, 4.5f, 6.7f));
+ EXPECT_NE(Float4(1.2f, 2.3f, 4.5f, 6.7f), Float4(1.3f, 2.3f, 4.5f, 6.7f));
+ EXPECT_NE(Float4(1.2f, 2.3f, 4.5f, 6.7f), Float4(1.2f, 2.4f, 4.5f, 6.7f));
+ EXPECT_NE(Float4(1.2f, 2.3f, 4.5f, 6.7f), Float4(1.2f, 2.3f, 4.6f, 6.7f));
+ EXPECT_NE(Float4(1.2f, 2.3f, 4.5f, 6.7f), Float4(1.2f, 2.3f, 4.5f, 6.8f));
+ Matrix4 a(Vector4(1.1f, 2.2f, 3.3f, 4.4f),
+ Vector4(1.2f, 2.3f, 3.4f, 4.5f),
+ Vector4(1.3f, 2.4f, 3.5f, 4.6f),
+ Vector4(1.4f, 2.5f, 3.6f, 4.7f));
+ Matrix4 b(a);
+ EXPECT_EQ(a, b);
+ for (int ii = 0; ii < 4; ++ii) {
+ for (int jj = 0; jj < 4; ++jj) {
+ b = a;
+ b.setElem(ii, jj, b.getElem(ii, jj) * 2);
+ EXPECT_NE(a, b);
+ }
+ }
+}
+
+} // namespace o3d
+