Merge pull request #122 from cjcliffe/ui_visuals_to_panels

MSVC and TDMGCC fixes
This commit is contained in:
Charles J. Cliffe 2015-07-31 18:35:29 -04:00
commit b2d4cf8f9c
15 changed files with 219 additions and 211 deletions

View File

@ -38,4 +38,9 @@ namespace CubicVR {
} }
#include <cmath>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#endif #endif

View File

@ -10,6 +10,7 @@
#define CubicVR2_frustum_h #define CubicVR2_frustum_h
#include <vector> #include <vector>
#include "cubic_types.h"
#include "mat4.h" #include "mat4.h"
#include "vec3.h" #include "vec3.h"
#include "vec4.h" #include "vec4.h"
@ -75,14 +76,14 @@ namespace CubicVR {
//Sphere //Sphere
__float fov = 1 / pMatrix[5]; __float fov = 1 / pMatrix[5];
__float near = -planes[PLANE_NEAR][3]; __float znear = -planes[PLANE_NEAR][3];
__float far = planes[PLANE_FAR][3]; __float zfar = planes[PLANE_FAR][3];
__float view_length = far - near; __float view_length = zfar - znear;
__float height = view_length * fov; __float height = view_length * fov;
__float width = height; __float width = height;
vec3 P(0, 0, near + view_length * 0.5f); vec3 P(0, 0, znear + view_length * 0.5f);
vec3 Q(width, height, near + view_length); vec3 Q(width, height, znear + view_length);
vec3 diff = vec3::subtract(P, Q); vec3 diff = vec3::subtract(P, Q);
__float diff_mag = vec3::length(diff); __float diff_mag = vec3::length(diff);

View File

@ -11,6 +11,7 @@
#include <iostream> #include <iostream>
#include "vec3.h" #include "vec3.h"
#include <cstring>
namespace CubicVR { namespace CubicVR {

View File

@ -72,15 +72,15 @@ namespace CubicVR {
return mOut; return mOut;
} }
static mat4 perspective(__float fovy, __float aspect, __float near, __float far) { static mat4 perspective(__float fovy, __float aspect, __float znear, __float zfar) {
__float yFac = tan(fovy * (float)M_PI / 360.0f); __float yFac = tan(fovy * (float)M_PI / 360.0f);
__float xFac = yFac * aspect; __float xFac = yFac * aspect;
return mat4( return mat4(
1.0f / xFac, 0, 0, 0, 0, 1.0f / yFac, 0, 0, 0, 0, -(far + near) / (far - near), -1, 0, 0, -(2.0f * far * near) / (far - near), 0); 1.0f / xFac, 0, 0, 0, 0, 1.0f / yFac, 0, 0, 0, 0, -(zfar + znear) / (zfar - znear), -1, 0, 0, -(2.0f * zfar * znear) / (zfar - znear), 0);
}; };
static mat4 ortho(__float left,__float right,__float bottom,__float top,__float near,__float far) { static mat4 ortho(__float left,__float right,__float bottom,__float top,__float znear,__float zfar) {
return mat4(2.0f / (right - left), 0, 0, 0, 0, 2.0f / (top - bottom), 0, 0, 0, 0, -2.0f / (far - near), 0, -(left + right) / (right - left), -(top + bottom) / (top - bottom), -(far + near) / (far - near), 1); return mat4(2.0f / (right - left), 0, 0, 0, 0, 2.0f / (top - bottom), 0, 0, 0, 0, -2.0f / (zfar - znear), 0, -(left + right) / (right - left), -(top + bottom) / (top - bottom), -(zfar + znear) / (zfar - znear), 1);
}; };
static __float determinant(mat4 m) { static __float determinant(mat4 m) {

View File

@ -3,6 +3,7 @@
#include "CubicSDRDefs.h" #include "CubicSDRDefs.h"
#include "ThreadQueue.h" #include "ThreadQueue.h"
#include "IOThread.h" #include "IOThread.h"
#include <algorithm>
typedef ThreadQueue<ReferenceCounter *> VisualDataQueue; typedef ThreadQueue<ReferenceCounter *> VisualDataQueue;

View File

@ -9,9 +9,9 @@ GLPanel::GLPanel() : fillType(GLPANEL_FILL_SOLID), contentsVisible(true), transf
pos[1] = 0.0f; pos[1] = 0.0f;
size[0] = 1.0f; size[0] = 1.0f;
size[1] = 1.0f; size[1] = 1.0f;
fill[0] = RGB(0.5,0.5,0.5); fill[0] = RGB3f(0.5,0.5,0.5);
fill[1] = RGB(0.1,0.1,0.1); fill[1] = RGB3f(0.1,0.1,0.1);
borderColor = RGB(0.8, 0.8, 0.8); borderColor = RGB3f(0.8, 0.8, 0.8);
setCoordinateSystem(GLPANEL_Y_UP); setCoordinateSystem(GLPANEL_Y_UP);
} }
@ -31,7 +31,7 @@ void GLPanel::genArrays() {
max, min max, min
}; };
RGB c[4]; RGB3f c[4];
if (fillType == GLPANEL_FILL_SOLID) { if (fillType == GLPANEL_FILL_SOLID) {
c[0] = c[1] = c[2] = c[3] = fill[0]; c[0] = c[1] = c[2] = c[3] = fill[0];
@ -58,7 +58,7 @@ void GLPanel::genArrays() {
glColors.reserve(3 * 8); glColors.reserve(3 * 8);
glColors.resize(3 * 8); glColors.resize(3 * 8);
RGB c[8]; RGB3f c[8];
if (fillType == GLPANEL_FILL_GRAD_BAR_X) { if (fillType == GLPANEL_FILL_GRAD_BAR_X) {
float pts[2 * 8] = { float pts[2 * 8] = {
@ -173,12 +173,12 @@ void GLPanel::setFill(GLPanelFillType fill_mode) {
genArrays(); genArrays();
} }
void GLPanel::setFillColor(RGB color1) { void GLPanel::setFillColor(RGB3f color1) {
fill[0] = color1; fill[0] = color1;
genArrays(); genArrays();
} }
void GLPanel::setFillColor(RGB color1, RGB color2) { void GLPanel::setFillColor(RGB3f color1, RGB3f color2) {
fill[0] = color1; fill[0] = color1;
fill[1] = color2; fill[1] = color2;
genArrays(); genArrays();
@ -189,7 +189,7 @@ void GLPanel::setMarginPx(float marg) {
} }
void GLPanel::setBorderColor(RGB clr) { void GLPanel::setBorderColor(RGB3f clr) {
borderColor = clr; borderColor = clr;
} }

View File

@ -42,8 +42,8 @@ public:
GLPanelCoordinateSystem coord; GLPanelCoordinateSystem coord;
float marginPx; float marginPx;
GLPanelEdges borderPx; GLPanelEdges borderPx;
RGB fill[2]; RGB3f fill[2];
RGB borderColor; RGB3f borderColor;
bool contentsVisible; bool contentsVisible;
CubicVR::mat4 transform; CubicVR::mat4 transform;
CubicVR::mat4 localTransform; CubicVR::mat4 localTransform;
@ -68,11 +68,11 @@ public:
void setCoordinateSystem(GLPanelCoordinateSystem coord); void setCoordinateSystem(GLPanelCoordinateSystem coord);
void setFill(GLPanelFillType fill_mode); void setFill(GLPanelFillType fill_mode);
void setFillColor(RGB color1); void setFillColor(RGB3f color1);
void setFillColor(RGB color1, RGB color2); void setFillColor(RGB3f color1, RGB3f color2);
void setMarginPx(float marg); void setMarginPx(float marg);
void setBorderColor(RGB clr); void setBorderColor(RGB3f clr);
void setBorderPx(float bord); void setBorderPx(float bord);
void setBorderPx(float bordl, float bordr, float bordt, float bordb); void setBorderPx(float bordl, float bordr, float bordt, float bordb);

View File

@ -9,30 +9,30 @@ PrimaryGLContext(canvas, sharedContext) {
testPanel.setSize(1.0, 1.0); testPanel.setSize(1.0, 1.0);
testPanel.setMarginPx(10); testPanel.setMarginPx(10);
testPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_Y); testPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_Y);
testPanel.setFillColor(RGB(0.0,0.0,1.0), RGB(0.0,1.0,0.0)); testPanel.setFillColor(RGB3f(0.0,0.0,1.0), RGB3f(0.0,1.0,0.0));
testChildPanel.setPosition(0.0, 0.0); testChildPanel.setPosition(0.0, 0.0);
testChildPanel.setMarginPx(5); testChildPanel.setMarginPx(5);
testChildPanel.setSize(1.0, 0.33); testChildPanel.setSize(1.0, 0.33);
testChildPanel.setCoordinateSystem(GLPanel::GLPANEL_Y_DOWN_ZERO_ONE); testChildPanel.setCoordinateSystem(GLPanel::GLPANEL_Y_DOWN_ZERO_ONE);
testChildPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_X); testChildPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_X);
testChildPanel.setFillColor(RGB(0.0,0.0,1.0), RGB(0.0,1.0,0.0)); testChildPanel.setFillColor(RGB3f(0.0,0.0,1.0), RGB3f(0.0,1.0,0.0));
testChildPanel.setBorderPx(1); testChildPanel.setBorderPx(1);
testChildPanel2.setPosition(0.0, -0.66); testChildPanel2.setPosition(0.0, -0.66);
testChildPanel2.setSize(1.0, 0.33); testChildPanel2.setSize(1.0, 0.33);
testChildPanel2.setMarginPx(5); testChildPanel2.setMarginPx(5);
testChildPanel2.setFill(GLPanel::GLPANEL_FILL_GRAD_X); testChildPanel2.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
testChildPanel2.setFillColor(RGB(0.0,0.0,1.0), RGB(0.0,1.0,0.0)); testChildPanel2.setFillColor(RGB3f(0.0,0.0,1.0), RGB3f(0.0,1.0,0.0));
testChildPanel2.setBorderColor(RGB(1.0,0.0,0.0)); testChildPanel2.setBorderColor(RGB3f(1.0,0.0,0.0));
testChildPanel2.setBorderPx(1); testChildPanel2.setBorderPx(1);
testChildPanel3.setPosition(0.0, 0.66); testChildPanel3.setPosition(0.0, 0.66);
testChildPanel3.setSize(1.0, 0.33); testChildPanel3.setSize(1.0, 0.33);
testChildPanel3.setMarginPx(5); testChildPanel3.setMarginPx(5);
testChildPanel3.setFill(GLPanel::GLPANEL_FILL_GRAD_X); testChildPanel3.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
testChildPanel3.setFillColor(RGB(0.0,0.0,1.0), RGB(0.0,1.0,0.0)); testChildPanel3.setFillColor(RGB3f(0.0,0.0,1.0), RGB3f(0.0,1.0,0.0));
testChildPanel3.setBorderColor(RGB(1.0,0.0,0.0)); testChildPanel3.setBorderColor(RGB3f(1.0,0.0,0.0));
testChildPanel3.setBorderPx(1); testChildPanel3.setBorderPx(1);
testText1.setText("Testing 123.."); testText1.setText("Testing 123..");

View File

@ -41,27 +41,27 @@ DefaultColorTheme::DefaultColorTheme() {
waterfallGradient.addColor(GradientColor(1.0, 1.0, 0)); waterfallGradient.addColor(GradientColor(1.0, 1.0, 0));
waterfallGradient.addColor(GradientColor(1.0, 0.2, 0.0)); waterfallGradient.addColor(GradientColor(1.0, 0.2, 0.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 1); waterfallHighlight = RGB3f(1, 1, 1);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(0.9, 0.9, 0.9); fftLine = RGB3f(0.9, 0.9, 0.9);
fftHighlight = RGB(1, 1, 1); fftHighlight = RGB3f(1, 1, 1);
scopeLine = RGB(0.9, 0.9, 0.9); scopeLine = RGB3f(0.9, 0.9, 0.9);
tuningBarLight = RGB(0.2, 0.2, 0.9); tuningBarLight = RGB3f(0.2, 0.2, 0.9);
tuningBarDark = RGB(0.0, 0.0, 0.35); tuningBarDark = RGB3f(0.0, 0.0, 0.35);
tuningBarUp = RGB(1.0, 139.0/255.0, 96.0/255.0); tuningBarUp = RGB3f(1.0, 139.0/255.0, 96.0/255.0);
tuningBarDown = RGB(148.0/255.0, 148.0/255.0, 1.0); tuningBarDown = RGB3f(148.0/255.0, 148.0/255.0, 1.0);
meterLevel = RGB(0.1, 0.75, 0.1); meterLevel = RGB3f(0.1, 0.75, 0.1);
meterValue = RGB(0.75, 0.1, 0.1); meterValue = RGB3f(0.75, 0.1, 0.1);
text = RGB(1, 1, 1); text = RGB3f(1, 1, 1);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(0.65, 0.65, 0.65); button = RGB3f(0.65, 0.65, 0.65);
buttonHighlight = RGB(1, 1, 0); buttonHighlight = RGB3f(1, 1, 0);
scopeBackground = RGB(0.1, 0.1, 0.1); scopeBackground = RGB3f(0.1, 0.1, 0.1);
fftBackground = RGB(0.1, 0.1, 0.1); fftBackground = RGB3f(0.1, 0.1, 0.1);
generalBackground = RGB(0.1, 0.1, 0.1); generalBackground = RGB3f(0.1, 0.1, 0.1);
} }
@ -72,27 +72,27 @@ RadarColorTheme::RadarColorTheme() {
waterfallGradient.addColor(GradientColor(40.0 / 255.0, 240.0 / 255.0, 60.0 / 255.0)); waterfallGradient.addColor(GradientColor(40.0 / 255.0, 240.0 / 255.0, 60.0 / 255.0));
waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0)); waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 1); waterfallHighlight = RGB3f(1, 1, 1);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(0.8, 1.0, 0.8); fftLine = RGB3f(0.8, 1.0, 0.8);
fftHighlight = RGB(1, 1, 1); fftHighlight = RGB3f(1, 1, 1);
scopeLine = RGB(0.8, 1.0, 0.8); scopeLine = RGB3f(0.8, 1.0, 0.8);
tuningBarLight = RGB(0.0, 0.45, 0.0); tuningBarLight = RGB3f(0.0, 0.45, 0.0);
tuningBarDark = RGB(0.0, 0.1, 0.0); tuningBarDark = RGB3f(0.0, 0.1, 0.0);
tuningBarUp = RGB(1.0, 139.0/255.0, 96.0/255.0); tuningBarUp = RGB3f(1.0, 139.0/255.0, 96.0/255.0);
tuningBarDown = RGB(148.0/255.0, 0.0, 0.0); tuningBarDown = RGB3f(148.0/255.0, 0.0, 0.0);
meterLevel = RGB(0, 0.5, 0); meterLevel = RGB3f(0, 0.5, 0);
meterValue = RGB(0, 0.5, 0); meterValue = RGB3f(0, 0.5, 0);
text = RGB(0.8, 1.0, 0.8); text = RGB3f(0.8, 1.0, 0.8);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(0.65, 0.75, 0.65); button = RGB3f(0.65, 0.75, 0.65);
buttonHighlight = RGB(0.65, 1.0, 0.65); buttonHighlight = RGB3f(0.65, 1.0, 0.65);
scopeBackground = RGB(0.05, 0.1, 0.05); scopeBackground = RGB3f(0.05, 0.1, 0.05);
fftBackground = RGB(0.05, 0.1, 0.05); fftBackground = RGB3f(0.05, 0.1, 0.05);
generalBackground = RGB(0.05, 0.1, 0.05); generalBackground = RGB3f(0.05, 0.1, 0.05);
} }
BlackAndWhiteColorTheme::BlackAndWhiteColorTheme() { BlackAndWhiteColorTheme::BlackAndWhiteColorTheme() {
@ -101,27 +101,27 @@ BlackAndWhiteColorTheme::BlackAndWhiteColorTheme() {
waterfallGradient.addColor(GradientColor(0.75, 0.75, 0.75)); waterfallGradient.addColor(GradientColor(0.75, 0.75, 0.75));
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0)); waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 0.9); waterfallHighlight = RGB3f(1, 1, 0.9);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(0.9, 0.9, 0.9); fftLine = RGB3f(0.9, 0.9, 0.9);
fftHighlight = RGB(1, 1, 0.9); fftHighlight = RGB3f(1, 1, 0.9);
scopeLine = RGB(0.9, 0.9, 0.9); scopeLine = RGB3f(0.9, 0.9, 0.9);
tuningBarLight = RGB(0.4, 0.4, 0.4); tuningBarLight = RGB3f(0.4, 0.4, 0.4);
tuningBarDark = RGB(0.1, 0.1, 0.1); tuningBarDark = RGB3f(0.1, 0.1, 0.1);
tuningBarUp = RGB(0.8, 0.8, 0.8); tuningBarUp = RGB3f(0.8, 0.8, 0.8);
tuningBarDown = RGB(0.4, 0.4, 0.4); tuningBarDown = RGB3f(0.4, 0.4, 0.4);
meterLevel = RGB(0.5, 0.5, 0.5); meterLevel = RGB3f(0.5, 0.5, 0.5);
meterValue = RGB(0.5, 0.5, 0.5); meterValue = RGB3f(0.5, 0.5, 0.5);
text = RGB(1, 1, 1); text = RGB3f(1, 1, 1);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(0.65, 0.65, 0.65); button = RGB3f(0.65, 0.65, 0.65);
buttonHighlight = RGB(1, 1, 1); buttonHighlight = RGB3f(1, 1, 1);
scopeBackground = RGB(0.1, 0.1, 0.1); scopeBackground = RGB3f(0.1, 0.1, 0.1);
fftBackground = RGB(0.1, 0.1, 0.1); fftBackground = RGB3f(0.1, 0.1, 0.1);
generalBackground = RGB(0.1, 0.1, 0.1); generalBackground = RGB3f(0.1, 0.1, 0.1);
} }
@ -139,27 +139,27 @@ SharpColorTheme::SharpColorTheme() {
waterfallGradient.addColor(GradientColor(1.0, 0.25, 0.0)); waterfallGradient.addColor(GradientColor(1.0, 0.25, 0.0));
waterfallGradient.addColor(GradientColor(0.5, 0.1, 0.0)); waterfallGradient.addColor(GradientColor(0.5, 0.1, 0.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(0.9, 0.9, 1.0); waterfallHighlight = RGB3f(0.9, 0.9, 1.0);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(0.9, 0.9, 1.0); fftLine = RGB3f(0.9, 0.9, 1.0);
fftHighlight = RGB(0.9, 0.9, 1.0); fftHighlight = RGB3f(0.9, 0.9, 1.0);
scopeLine = RGB(0.85, 0.85, 1.0); scopeLine = RGB3f(0.85, 0.85, 1.0);
tuningBarLight = RGB(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0); tuningBarLight = RGB3f(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0);
tuningBarDark = RGB(14.0 / 255.0, 53.0 / 255.0, 89.5 / 255.0); tuningBarDark = RGB3f(14.0 / 255.0, 53.0 / 255.0, 89.5 / 255.0);
tuningBarUp = RGB(0.7, 0.7, 0.7); tuningBarUp = RGB3f(0.7, 0.7, 0.7);
tuningBarDown = RGB(1.0, 0.0, 0.0); tuningBarDown = RGB3f(1.0, 0.0, 0.0);
meterLevel = RGB(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0); meterLevel = RGB3f(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0);
meterValue = RGB(190.0 / 255.0, 190.0 / 255.0, 60.0 / 255.0); meterValue = RGB3f(190.0 / 255.0, 190.0 / 255.0, 60.0 / 255.0);
text = RGB(0.9, 0.9, 1); text = RGB3f(0.9, 0.9, 1);
freqLine = RGB(0.85, 0.85, 1.0); freqLine = RGB3f(0.85, 0.85, 1.0);
button = RGB(217.0 / 255.0, 218.0 / 255.0, 228.0 / 255.0); button = RGB3f(217.0 / 255.0, 218.0 / 255.0, 228.0 / 255.0);
buttonHighlight = RGB(208.0 / 255.0, 249.0 / 255.0, 255.0 / 255.0); buttonHighlight = RGB3f(208.0 / 255.0, 249.0 / 255.0, 255.0 / 255.0);
scopeBackground = RGB(0.05, 0.05, 0.15); scopeBackground = RGB3f(0.05, 0.05, 0.15);
fftBackground = RGB(0.05, 0.05, 0.15); fftBackground = RGB3f(0.05, 0.05, 0.15);
generalBackground = RGB(0.05, 0.05, 0.15); generalBackground = RGB3f(0.05, 0.05, 0.15);
} }
RadColorTheme::RadColorTheme() { RadColorTheme::RadColorTheme() {
@ -170,27 +170,27 @@ RadColorTheme::RadColorTheme() {
waterfallGradient.addColor(GradientColor(1.0, 40.0 / 255.0, 40.0 / 255.0)); waterfallGradient.addColor(GradientColor(1.0, 40.0 / 255.0, 40.0 / 255.0));
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0)); waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 1); waterfallHighlight = RGB3f(1, 1, 1);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(1.0, 0.9, 0.9); fftLine = RGB3f(1.0, 0.9, 0.9);
fftHighlight = RGB(1, 1, 1); fftHighlight = RGB3f(1, 1, 1);
scopeLine = RGB(1.0, 0.9, 0.9); scopeLine = RGB3f(1.0, 0.9, 0.9);
tuningBarLight = RGB(0.0, 0.45, 0.0); tuningBarLight = RGB3f(0.0, 0.45, 0.0);
tuningBarDark = RGB(0.0, 0.1, 0.0); tuningBarDark = RGB3f(0.0, 0.1, 0.0);
tuningBarUp = RGB(1.0, 0.0, 0.0); tuningBarUp = RGB3f(1.0, 0.0, 0.0);
tuningBarDown = RGB(0.0, 0.5, 1.0); tuningBarDown = RGB3f(0.0, 0.5, 1.0);
meterLevel = RGB(0, 0.5, 0); meterLevel = RGB3f(0, 0.5, 0);
meterValue = RGB(0.5, 0, 0); meterValue = RGB3f(0.5, 0, 0);
text = RGB(1, 1, 1); text = RGB3f(1, 1, 1);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(0.65, 0.65, 0.65); button = RGB3f(0.65, 0.65, 0.65);
buttonHighlight = RGB(0.76, 0.65, 0); buttonHighlight = RGB3f(0.76, 0.65, 0);
scopeBackground = RGB(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0); scopeBackground = RGB3f(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0);
fftBackground = RGB(0, 0, 50.0 / 255.0); fftBackground = RGB3f(0, 0, 50.0 / 255.0);
generalBackground = RGB(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0); generalBackground = RGB3f(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0);
} }
TouchColorTheme::TouchColorTheme() { TouchColorTheme::TouchColorTheme() {
@ -204,27 +204,27 @@ TouchColorTheme::TouchColorTheme() {
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 0.0 / 255.0, 0.0 / 255.0)); waterfallGradient.addColor(GradientColor(255.0 / 255.0, 0.0 / 255.0, 0.0 / 255.0));
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 255.0 / 255.0, 255.0 / 255.0)); waterfallGradient.addColor(GradientColor(255.0 / 255.0, 255.0 / 255.0, 255.0 / 255.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 1); waterfallHighlight = RGB3f(1, 1, 1);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0); fftLine = RGB3f(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0);
fftHighlight = RGB(1.0, 1.0, 1.0); fftHighlight = RGB3f(1.0, 1.0, 1.0);
scopeLine = RGB(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0); scopeLine = RGB3f(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0);
tuningBarLight = RGB(0.2, 0.2, 0.7); tuningBarLight = RGB3f(0.2, 0.2, 0.7);
tuningBarDark = RGB(0.1, 0.1, 0.45); tuningBarDark = RGB3f(0.1, 0.1, 0.45);
tuningBarUp = RGB(0.5, 139.0/255.0, 96.0/255.0); tuningBarUp = RGB3f(0.5, 139.0/255.0, 96.0/255.0);
tuningBarDown = RGB(0.6, 108.0/255.0, 1.0); tuningBarDown = RGB3f(0.6, 108.0/255.0, 1.0);
meterLevel = RGB(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0); meterLevel = RGB3f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
meterValue = RGB(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0); meterValue = RGB3f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
text = RGB(1, 1, 1); text = RGB3f(1, 1, 1);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(1.0, 1.0, 1.0); button = RGB3f(1.0, 1.0, 1.0);
buttonHighlight = RGB(208.0 / 255.0, 202.0 / 255.0, 247.0 / 255.0); buttonHighlight = RGB3f(208.0 / 255.0, 202.0 / 255.0, 247.0 / 255.0);
scopeBackground = RGB(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0); scopeBackground = RGB3f(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0);
fftBackground = RGB(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0); fftBackground = RGB3f(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0);
generalBackground = RGB(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0); generalBackground = RGB3f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
} }
@ -239,27 +239,27 @@ HDColorTheme::HDColorTheme() {
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 235.0 / 255.0, 100.0 / 255.0)); waterfallGradient.addColor(GradientColor(255.0 / 255.0, 235.0 / 255.0, 100.0 / 255.0));
waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0)); waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0));
waterfallGradient.generate(256); waterfallGradient.generate(256);
waterfallHighlight = RGB(1, 1, 1); waterfallHighlight = RGB3f(1, 1, 1);
waterfallNew = RGB(0, 1, 0); waterfallNew = RGB3f(0, 1, 0);
waterfallHover = RGB(1, 1, 0); waterfallHover = RGB3f(1, 1, 0);
waterfallDestroy = RGB(1, 0, 0); waterfallDestroy = RGB3f(1, 0, 0);
fftLine = RGB(0.9, 0.9, 0.9); fftLine = RGB3f(0.9, 0.9, 0.9);
fftHighlight = RGB(1, 1, 1); fftHighlight = RGB3f(1, 1, 1);
scopeLine = RGB(0.9, 0.9, 0.9); scopeLine = RGB3f(0.9, 0.9, 0.9);
tuningBarLight = RGB(0.4, 0.4, 1.0); tuningBarLight = RGB3f(0.4, 0.4, 1.0);
tuningBarDark = RGB(0.1, 0.1, 0.45); tuningBarDark = RGB3f(0.1, 0.1, 0.45);
tuningBarUp = RGB(1.0, 139.0/255.0, 96.0/255.0); tuningBarUp = RGB3f(1.0, 139.0/255.0, 96.0/255.0);
tuningBarDown = RGB(148.0/255.0, 148.0/255.0, 1.0); tuningBarDown = RGB3f(148.0/255.0, 148.0/255.0, 1.0);
meterLevel = RGB(0, 0.5, 0); meterLevel = RGB3f(0, 0.5, 0);
meterValue = RGB(0.0, 0.0, 1.0); meterValue = RGB3f(0.0, 0.0, 1.0);
text = RGB(1, 1, 1); text = RGB3f(1, 1, 1);
freqLine = RGB(1, 1, 1); freqLine = RGB3f(1, 1, 1);
button = RGB(0, 0.7, 0.7); button = RGB3f(0, 0.7, 0.7);
buttonHighlight = RGB(1, 1, 1); buttonHighlight = RGB3f(1, 1, 1);
scopeBackground = RGB(0.0, 0.0, 48.0 / 255.0); scopeBackground = RGB3f(0.0, 0.0, 48.0 / 255.0);
fftBackground = RGB(0.0, 0.0, 48.0 / 255.0); fftBackground = RGB3f(0.0, 0.0, 48.0 / 255.0);
generalBackground = RGB(0.0, 0.0, 0.0); generalBackground = RGB3f(0.0, 0.0, 0.0);
} }

View File

@ -15,21 +15,21 @@
#define COLOR_THEME_RADAR 6 #define COLOR_THEME_RADAR 6
#define COLOR_THEME_MAX 7 #define COLOR_THEME_MAX 7
class RGB { class RGB3f {
public: public:
float r, g, b; float r, g, b;
RGB(float r, float g, float b) : RGB3f(float r, float g, float b) :
r(r), g(g), b(b) { r(r), g(g), b(b) {
} }
RGB() : RGB3f() :
RGB(0, 0, 0) { RGB3f(0, 0, 0) {
} }
~RGB() { ~RGB3f() {
} }
RGB & operator=(const RGB &other) { RGB3f & operator=(const RGB3f &other) {
r = other.r; r = other.r;
g = other.g; g = other.g;
b = other.b; b = other.b;
@ -39,28 +39,28 @@ public:
class ColorTheme { class ColorTheme {
public: public:
RGB waterfallHighlight; RGB3f waterfallHighlight;
RGB waterfallNew; RGB3f waterfallNew;
RGB wfHighlight; RGB3f wfHighlight;
RGB waterfallHover; RGB3f waterfallHover;
RGB waterfallDestroy; RGB3f waterfallDestroy;
RGB fftLine; RGB3f fftLine;
RGB fftHighlight; RGB3f fftHighlight;
RGB scopeLine; RGB3f scopeLine;
RGB tuningBarLight; RGB3f tuningBarLight;
RGB tuningBarDark; RGB3f tuningBarDark;
RGB tuningBarUp; RGB3f tuningBarUp;
RGB tuningBarDown; RGB3f tuningBarDown;
RGB meterLevel; RGB3f meterLevel;
RGB meterValue; RGB3f meterValue;
RGB text; RGB3f text;
RGB freqLine; RGB3f freqLine;
RGB button; RGB3f button;
RGB buttonHighlight; RGB3f buttonHighlight;
RGB scopeBackground; RGB3f scopeBackground;
RGB fftBackground; RGB3f fftBackground;
RGB generalBackground; RGB3f generalBackground;
Gradient waterfallGradient; Gradient waterfallGradient;

View File

@ -59,7 +59,7 @@ PrimaryGLContext::PrimaryGLContext(wxGLCanvas *canvas, wxGLContext *sharedContex
//#endif //#endif
} }
void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGB color, long long center_freq, long long srate) { void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGB3f color, long long center_freq, long long srate) {
if (!demod) { if (!demod) {
return; return;
} }
@ -140,7 +140,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGB color, long
} }
void PrimaryGLContext::DrawDemod(DemodulatorInstance *demod, RGB color, long long center_freq, long long srate) { void PrimaryGLContext::DrawDemod(DemodulatorInstance *demod, RGB3f color, long long center_freq, long long srate) {
if (!demod) { if (!demod) {
return; return;
} }
@ -290,7 +290,7 @@ void PrimaryGLContext::DrawDemod(DemodulatorInstance *demod, RGB color, long lon
} }
void PrimaryGLContext::DrawFreqSelector(float uxPos, RGB color, float w, long long center_freq, long long srate) { void PrimaryGLContext::DrawFreqSelector(float uxPos, RGB3f color, float w, long long center_freq, long long srate) {
DemodulatorInstance *demod = wxGetApp().getDemodMgr().getLastActiveDemodulator(); DemodulatorInstance *demod = wxGetApp().getDemodMgr().getLastActiveDemodulator();
long long bw = 0; long long bw = 0;
@ -341,7 +341,7 @@ void PrimaryGLContext::DrawFreqSelector(float uxPos, RGB color, float w, long lo
} }
void PrimaryGLContext::DrawRangeSelector(float uxPos1, float uxPos2, RGB color) { void PrimaryGLContext::DrawRangeSelector(float uxPos1, float uxPos2, RGB3f color) {
if (uxPos2 < uxPos1) { if (uxPos2 < uxPos1) {
float temp = uxPos2; float temp = uxPos2;
uxPos2=uxPos1; uxPos2=uxPos1;

View File

@ -21,10 +21,10 @@ public:
void BeginDraw(float r, float g, float b); void BeginDraw(float r, float g, float b);
void EndDraw(); void EndDraw();
void DrawFreqSelector(float uxPos, RGB color, float w = 0, long long center_freq = -1, long long srate = 0); void DrawFreqSelector(float uxPos, RGB3f color, float w = 0, long long center_freq = -1, long long srate = 0);
void DrawRangeSelector(float uxPos1, float uxPos2, RGB color); void DrawRangeSelector(float uxPos1, float uxPos2, RGB3f color);
void DrawDemod(DemodulatorInstance *demod, RGB color, long long center_freq = -1, long long srate = 0); void DrawDemod(DemodulatorInstance *demod, RGB3f color, long long center_freq = -1, long long srate = 0);
void DrawDemodInfo(DemodulatorInstance *demod, RGB color, long long center_freq = -1, long long srate = 0); void DrawDemodInfo(DemodulatorInstance *demod, RGB3f color, long long center_freq = -1, long long srate = 0);
void setHoverAlpha(float hoverAlpha); void setHoverAlpha(float hoverAlpha);

View File

@ -84,10 +84,10 @@ void TuningCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
0.75, mouseTracker.getOriginMouseX(), mouseTracker.getMouseX()); 0.75, mouseTracker.getOriginMouseX(), mouseTracker.getMouseX());
} }
RGB clr = top ? ThemeMgr::mgr.currentTheme->tuningBarUp : ThemeMgr::mgr.currentTheme->tuningBarDown; RGB3f clr = top ? ThemeMgr::mgr.currentTheme->tuningBarUp : ThemeMgr::mgr.currentTheme->tuningBarDown;
RGB clrDark = ThemeMgr::mgr.currentTheme->tuningBarDark; RGB3f clrDark = ThemeMgr::mgr.currentTheme->tuningBarDark;
RGB clrMid = ThemeMgr::mgr.currentTheme->tuningBarLight; RGB3f clrMid = ThemeMgr::mgr.currentTheme->tuningBarLight;
glContext->DrawTunerBarIndexed(1, 3, 11, freqDP, freqW, clrMid, 0.25, true, true); // freq glContext->DrawTunerBarIndexed(1, 3, 11, freqDP, freqW, clrMid, 0.25, true, true); // freq
glContext->DrawTunerBarIndexed(4, 6, 11, freqDP, freqW, clrDark, 0.25, true, true); glContext->DrawTunerBarIndexed(4, 6, 11, freqDP, freqW, clrDark, 0.25, true, true);
@ -129,7 +129,7 @@ void TuningCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
glContext->DrawTuner(freq, 11, freqDP, freqW); glContext->DrawTuner(freq, 11, freqDP, freqW);
int snap = wxGetApp().getFrequencySnap(); int snap = wxGetApp().getFrequencySnap();
if (snap != 1) { if (snap != 1) {
glContext->DrawTunerDigitBox((int)log10(snap), 11, freqDP, freqW, RGB(1.0,0.0,0.0)); glContext->DrawTunerDigitBox((int)log10(snap), 11, freqDP, freqW, RGB3f(1.0,0.0,0.0));
} }
} }
glContext->DrawTuner(bw, 7, bwDP, bwW); glContext->DrawTuner(bw, 7, bwDP, bwW);

View File

@ -112,7 +112,7 @@ void TuningContext::DrawTuner(long long freq, int count, float displayPos, float
} }
void TuningContext::DrawTunerDigitBox(int index, int count, float displayPos, float displayWidth, RGB c) { void TuningContext::DrawTunerDigitBox(int index, int count, float displayPos, float displayWidth, RGB3f c) {
GLint vp[4]; GLint vp[4];
glGetIntegerv( GL_VIEWPORT, vp); glGetIntegerv( GL_VIEWPORT, vp);
@ -152,7 +152,7 @@ int TuningContext::GetTunerDigitIndex(float mPos, int count, float displayPos, f
return count - index; return count - index;
} }
void TuningContext::DrawTunerBarIndexed(int start, int end, int count, float displayPos, float displayWidth, RGB color, float alpha, bool top, void TuningContext::DrawTunerBarIndexed(int start, int end, int count, float displayPos, float displayWidth, RGB3f color, float alpha, bool top,
bool bottom) { bool bottom) {
float ofs = (displayWidth / (float) count); float ofs = (displayWidth / (float) count);
float p2 = displayPos + ofs * (float) (count - start + 1); float p2 = displayPos + ofs * (float) (count - start + 1);

View File

@ -14,9 +14,9 @@ public:
void DrawBegin(); void DrawBegin();
void Draw(float r, float g, float b, float a, float p1, float p2); void Draw(float r, float g, float b, float a, float p1, float p2);
void DrawTuner(long long freq, int count, float displayPos, float displayWidth); void DrawTuner(long long freq, int count, float displayPos, float displayWidth);
void DrawTunerDigitBox(int index, int count, float displayPos, float displayWidth, RGB c); void DrawTunerDigitBox(int index, int count, float displayPos, float displayWidth, RGB3f c);
int GetTunerDigitIndex(float mPos, int count, float displayPos, float displayWidth); int GetTunerDigitIndex(float mPos, int count, float displayPos, float displayWidth);
void DrawTunerBarIndexed(int start, int end, int count, float displayPos, float displayWidth, RGB color, float alpha, bool top, bool bottom); void DrawTunerBarIndexed(int start, int end, int count, float displayPos, float displayWidth, RGB3f color, float alpha, bool top, bool bottom);
void DrawDemodFreqBw(long long freq, unsigned int bw, long long center); void DrawDemodFreqBw(long long freq, unsigned int bw, long long center);
void DrawEnd(); void DrawEnd();