From cd148cb3ff7674a5353f29dd81b4ec4dc810ffb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 25 Jan 2013 15:10:08 +0100 Subject: [PATCH] Primitives: added crosshair primitive. --- src/Primitives/CMakeLists.txt | 2 ++ src/Primitives/Crosshair.cpp | 40 +++++++++++++++++++++++++ src/Primitives/Crosshair.h | 56 +++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 src/Primitives/Crosshair.cpp create mode 100644 src/Primitives/Crosshair.h diff --git a/src/Primitives/CMakeLists.txt b/src/Primitives/CMakeLists.txt index 10d36351e..189052ec1 100644 --- a/src/Primitives/CMakeLists.txt +++ b/src/Primitives/CMakeLists.txt @@ -1,5 +1,6 @@ set(MagnumPrimitives_SRCS Capsule.cpp + Crosshair.cpp Cube.cpp Cylinder.cpp Icosphere.cpp @@ -8,6 +9,7 @@ set(MagnumPrimitives_SRCS UVSphere.cpp) set(MagnumPrimitives_HEADERS Capsule.h + Crosshair.h Cube.h Cylinder.h Icosphere.h diff --git a/src/Primitives/Crosshair.cpp b/src/Primitives/Crosshair.cpp new file mode 100644 index 000000000..26b323d65 --- /dev/null +++ b/src/Primitives/Crosshair.cpp @@ -0,0 +1,40 @@ +/* + Copyright © 2010, 2011, 2012 Vladimír Vondruš + + This file is part of Magnum. + + Magnum is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + Magnum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details. +*/ + +#include "Crosshair.h" + +#include "Math/Point2D.h" +#include "Math/Point3D.h" +#include "Trade/MeshData2D.h" +#include "Trade/MeshData3D.h" + +namespace Magnum { namespace Primitives { + +Trade::MeshData2D Crosshair2D::wireframe() { + return Trade::MeshData2D(Mesh::Primitive::Lines, nullptr, {new std::vector{ + {-1.0f, 0.0f}, {1.0f, 0.0f}, + { 0.0f, -1.0f}, {0.0f, 1.0f} + }}, {}); +} + +Trade::MeshData3D Crosshair3D::wireframe() { + return Trade::MeshData3D(Mesh::Primitive::Lines, nullptr, {new std::vector{ + {-1.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, + { 0.0f, -1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, + { 0.0f, 0.0f, -1.0f}, {0.0f, 0.0f, 1.0f} + }}, {}, {}); +} + +}} diff --git a/src/Primitives/Crosshair.h b/src/Primitives/Crosshair.h new file mode 100644 index 000000000..55c9841ff --- /dev/null +++ b/src/Primitives/Crosshair.h @@ -0,0 +1,56 @@ +#ifndef Magnum_Primitives_Cube_h +#define Magnum_Primitives_Cube_h +/* + Copyright © 2010, 2011, 2012 Vladimír Vondruš + + This file is part of Magnum. + + Magnum is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + Magnum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details. +*/ + +/** @file + * @brief Class Magnum::Primitives::Crosshair2D, Magnum::Primitives::Crosshair3D + */ + +#include "Trade/Trade.h" + +namespace Magnum { namespace Primitives { + +/** +@brief 2D crosshair primitive + +2x2 wireframe crosshair (two crossed lines), non-indexed +@ref Mesh::Primitive "Lines". +*/ +class Crosshair2D { + public: + /** @brief Wireframe crosshair */ + static Trade::MeshData2D wireframe(); + + Crosshair2D() = delete; +}; + +/** +@brief 3D crosshair primitive + +2x2x2 wireframe crosshair (three crossed lines), non-indexed +@ref Mesh::Primitive "Lines". +*/ +class Crosshair3D { + public: + /** @brief Wireframe crosshair */ + static Trade::MeshData3D wireframe(); + + Crosshair3D() = delete; +}; + +}} + +#endif