#include "view_coordinates.hpp"

// Uncomment for better auto-complete while editing the extension.
// #define EDIT_EXTENSION

namespace rerun {
    namespace components {

#ifdef EDIT_EXTENSION
        struct ViewCoordinatesExt {
            uint8_t coordinates[3];
#define ViewCoordinates ViewCoordinatesExt

            // <CODEGEN_COPY_TO_HEADER>

            enum ViewDir : uint8_t {
                Up = 1,
                Down = 2,
                Right = 3,
                Left = 4,
                Forward = 5,
                Back = 6,
            };

            /// Construct Vec3D from x/y/z values.
            constexpr ViewCoordinates(uint8_t axis0, uint8_t axis1, uint8_t axis2)
                : coordinates{axis0, axis1, axis2} {}

            /// Construct Vec3D from x/y/z values.
            constexpr ViewCoordinates(ViewDir axis0, ViewDir axis1, ViewDir axis2)
                : coordinates{axis0, axis1, axis2} {}

            // <BEGIN_GENERATED:declarations>
            // This section is generated by running `scripts/generate_view_coordinate_defs.py --cpp`
            static const rerun::components::ViewCoordinates ULF;
            static const rerun::components::ViewCoordinates UFL;
            static const rerun::components::ViewCoordinates LUF;
            static const rerun::components::ViewCoordinates LFU;
            static const rerun::components::ViewCoordinates FUL;
            static const rerun::components::ViewCoordinates FLU;
            static const rerun::components::ViewCoordinates ULB;
            static const rerun::components::ViewCoordinates UBL;
            static const rerun::components::ViewCoordinates LUB;
            static const rerun::components::ViewCoordinates LBU;
            static const rerun::components::ViewCoordinates BUL;
            static const rerun::components::ViewCoordinates BLU;
            static const rerun::components::ViewCoordinates URF;
            static const rerun::components::ViewCoordinates UFR;
            static const rerun::components::ViewCoordinates RUF;
            static const rerun::components::ViewCoordinates RFU;
            static const rerun::components::ViewCoordinates FUR;
            static const rerun::components::ViewCoordinates FRU;
            static const rerun::components::ViewCoordinates URB;
            static const rerun::components::ViewCoordinates UBR;
            static const rerun::components::ViewCoordinates RUB;
            static const rerun::components::ViewCoordinates RBU;
            static const rerun::components::ViewCoordinates BUR;
            static const rerun::components::ViewCoordinates BRU;
            static const rerun::components::ViewCoordinates DLF;
            static const rerun::components::ViewCoordinates DFL;
            static const rerun::components::ViewCoordinates LDF;
            static const rerun::components::ViewCoordinates LFD;
            static const rerun::components::ViewCoordinates FDL;
            static const rerun::components::ViewCoordinates FLD;
            static const rerun::components::ViewCoordinates DLB;
            static const rerun::components::ViewCoordinates DBL;
            static const rerun::components::ViewCoordinates LDB;
            static const rerun::components::ViewCoordinates LBD;
            static const rerun::components::ViewCoordinates BDL;
            static const rerun::components::ViewCoordinates BLD;
            static const rerun::components::ViewCoordinates DRF;
            static const rerun::components::ViewCoordinates DFR;
            static const rerun::components::ViewCoordinates RDF;
            static const rerun::components::ViewCoordinates RFD;
            static const rerun::components::ViewCoordinates FDR;
            static const rerun::components::ViewCoordinates FRD;
            static const rerun::components::ViewCoordinates DRB;
            static const rerun::components::ViewCoordinates DBR;
            static const rerun::components::ViewCoordinates RDB;
            static const rerun::components::ViewCoordinates RBD;
            static const rerun::components::ViewCoordinates BDR;
            static const rerun::components::ViewCoordinates BRD;
            static const rerun::components::ViewCoordinates RIGHT_HAND_X_UP;
            static const rerun::components::ViewCoordinates RIGHT_HAND_X_DOWN;
            static const rerun::components::ViewCoordinates RIGHT_HAND_Y_UP;
            static const rerun::components::ViewCoordinates RIGHT_HAND_Y_DOWN;
            static const rerun::components::ViewCoordinates RIGHT_HAND_Z_UP;
            static const rerun::components::ViewCoordinates RIGHT_HAND_Z_DOWN;
            static const rerun::components::ViewCoordinates LEFT_HAND_X_UP;
            static const rerun::components::ViewCoordinates LEFT_HAND_X_DOWN;
            static const rerun::components::ViewCoordinates LEFT_HAND_Y_UP;
            static const rerun::components::ViewCoordinates LEFT_HAND_Y_DOWN;
            static const rerun::components::ViewCoordinates LEFT_HAND_Z_UP;
            static const rerun::components::ViewCoordinates LEFT_HAND_Z_DOWN;
            // <END_GENERATED:declarations>

            // </CODEGEN_COPY_TO_HEADER>
        };
#endif
        // <BEGIN_GENERATED:definitions>
        // This section is generated by running `scripts/generate_view_coordinate_defs.py --cpp`
        const ViewCoordinates ViewCoordinates::ULF = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::UFL = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::LUF = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::LFU = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::FUL = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::FLU = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::ULB = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::UBL = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::LUB = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::LBU = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::BUL = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::BLU = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::URF = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::UFR = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::RUF = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::RFU = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::FUR = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::FRU = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::URB = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::UBR = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::RUB = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::RBU = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::BUR = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::BRU = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::DLF = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::DFL = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::LDF = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::LFD = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::FDL = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::FLD = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::DLB = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::DBL = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::LDB = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::LBD = ViewCoordinates(
            rerun::components::ViewCoordinates::Left, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::BDL = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Left
        );
        const ViewCoordinates ViewCoordinates::BLD = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Left,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::DRF = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::DFR = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::RDF = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::RFD = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::FDR = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::FRD = ViewCoordinates(
            rerun::components::ViewCoordinates::Forward, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::DRB = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::DBR = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::RDB = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::RBD = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::BDR = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Right
        );
        const ViewCoordinates ViewCoordinates::BRD = ViewCoordinates(
            rerun::components::ViewCoordinates::Back, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_X_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_X_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_Y_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_Y_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_Z_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::RIGHT_HAND_Z_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Down
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_X_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Up, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_X_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Down, rerun::components::ViewCoordinates::Right,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_Y_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Up,
            rerun::components::ViewCoordinates::Forward
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_Y_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Down,
            rerun::components::ViewCoordinates::Back
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_Z_UP = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Back,
            rerun::components::ViewCoordinates::Up
        );
        const ViewCoordinates ViewCoordinates::LEFT_HAND_Z_DOWN = ViewCoordinates(
            rerun::components::ViewCoordinates::Right, rerun::components::ViewCoordinates::Forward,
            rerun::components::ViewCoordinates::Down
        );
        // <END_GENERATED:definitions>

    } // namespace components
} // namespace rerun
