File: Mesh3D.h

package info (click to toggle)
lsp-plugins 1.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 91,856 kB
  • sloc: cpp: 427,831; xml: 57,779; makefile: 9,961; php: 1,005; sh: 18
file content (136 lines) | stat: -rw-r--r-- 5,813 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
 * Copyright (C) 2021 Linux Studio Plugins Project <https://lsp-plug.in/>
 *           (C) 2021 Vladimir Sadovnikov <sadko4u@gmail.com>
 *
 * This file is part of lsp-plugin-fw
 * Created on: 4 окт. 2021 г.
 *
 * lsp-plugin-fw is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * lsp-plugin-fw 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 for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with lsp-plugin-fw. If not, see <https://www.gnu.org/licenses/>.
 */

#ifndef LSP_PLUG_IN_PLUG_FW_CTL_3D_MESH3D_H_
#define LSP_PLUG_IN_PLUG_FW_CTL_3D_MESH3D_H_

#ifndef LSP_PLUG_IN_PLUG_FW_CTL_IMPL_
    #error "Use #include <lsp-plug.in/plug-fw/ctl.h>"
#endif /* LSP_PLUG_IN_PLUG_FW_CTL_IMPL_ */

#include <lsp-plug.in/plug-fw/ctl/3d/Object3D.h>

namespace lsp
{
    namespace ctl
    {
        namespace style
        {
            LSP_TK_STYLE_DEF_BEGIN(Mesh3D, Object3D)
                tk::prop::Color             sColor;         // Default color for triangles
                tk::prop::Color             sLineColor;     // Default color for lines
                tk::prop::Color             sPointColor;    // Default color for points
                tk::prop::Float             sPosX;          // X position
                tk::prop::Float             sPosY;          // Y position
                tk::prop::Float             sPosZ;          // Z position
                tk::prop::Float             sYaw;           // Yaw angle (degrees)
                tk::prop::Float             sPitch;         // Pitch angle (degrees)
                tk::prop::Float             sRoll;          // Roll angle (degrees)
                tk::prop::Float             sScaleX;        // Scaling by X axis
                tk::prop::Float             sScaleY;        // Scaling by Y axis
                tk::prop::Float             sScaleZ;        // Scaling by Z axis
            LSP_TK_STYLE_DEF_END
        }

        /**
         * ComboBox controller
         */
        class Mesh3D: public Object3D
        {
            public:
                static const ctl_class_t metadata;

            protected:
                enum flags_t
                {
                    F_DATA_CHANGED          = 1 << 0,
                    F_VIEW_CHANGED          = 1 << 1,
                    F_TRANSFORM_CHANGED     = 1 << 2,
                    F_COLOR_CHANGED         = 1 << 3,
                };

            protected:
                size_t                      nFlags;         // Change flags

                tk::prop::Color             sColor;         // Default color for triangles
                tk::prop::Color             sLineColor;     // Default color for lines
                tk::prop::Color             sPointColor;    // Default color for points
                tk::prop::Float             sPosX;          // X position
                tk::prop::Float             sPosY;          // Y position
                tk::prop::Float             sPosZ;          // Z position
                tk::prop::Float             sYaw;           // Yaw angle (degrees)
                tk::prop::Float             sPitch;         // Pitch angle (degrees)
                tk::prop::Float             sRoll;          // Roll angle (degrees)
                tk::prop::Float             sScaleX;        // Scaling by X axis
                tk::prop::Float             sScaleY;        // Scaling by Y axis
                tk::prop::Float             sScaleZ;        // Scaling by Z axis

                ctl::Color                  cColor;
                ctl::Color                  cLineColor;
                ctl::Color                  cPointColor;
                ctl::Float                  cPosX;
                ctl::Float                  cPosY;
                ctl::Float                  cPosZ;
                ctl::Float                  cYaw;
                ctl::Float                  cPitch;
                ctl::Float                  cRoll;
                ctl::Float                  cScaleX;
                ctl::Float                  cScaleY;
                ctl::Float                  cScaleZ;

                lltl::parray<r3d::buffer_t> vBuffers;

            protected:
                virtual void        process_view_change(const dsp::point3d_t *pov);
                virtual void        process_color_change();
                virtual void        process_transform_change();
                virtual void        process_data_change(lltl::parray<r3d::buffer_t> *dst);
                virtual void        reorder_triangles(const dsp::point3d_t *pov, r3d::buffer_t *buf);

            public:
                explicit Mesh3D(ui::IWrapper *wrapper);
                virtual ~Mesh3D();

                virtual status_t    init();
                virtual void        destroy();

            public:
                virtual void        set(ui::UIContext *ctx, const char *name, const char *value);

                virtual void        property_changed(tk::Property *prop);

                virtual bool        submit_foreground(lltl::darray<r3d::buffer_t> *dst);

                virtual void        query_draw();

                virtual void        query_data_change();

                virtual void        query_transform_change();

                virtual void        query_color_change();
        };

    } /* namespace ctl */
} /* namespace lsp */



#endif /* LSP_PLUG_IN_PLUG_FW_CTL_3D_MESH3D_H_ */