Skip to content

Commit ba8e2cb

Browse files
committed
GridPlot improvements and fixes
Fixed multithreadings issues More glDrawArrays usage
1 parent b09bbfb commit ba8e2cb

File tree

13 files changed

+370
-169
lines changed

13 files changed

+370
-169
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@
2626
*.exe
2727
*.out
2828
*.app
29+
*.idb
30+
*.user

examples/dynamicplot/dynamicplot.cpp

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,20 @@
55
//-----------------------------------------------------------------
66

77
#include <math.h>
8+
#include <limits>
9+
810
#include <QApplication>
911
#include <QElapsedTimer>
1012

1113
#include "dynamicplot.h"
1214

13-
1415
Plot::Plot()
1516
{
1617
//setTitle("Dynamic Plotter Demonstration");
1718

19+
setRenderThreadsCount(2);
20+
enableFastNormals(true);
21+
1822
// fill initial data
1923
for (int i = 0; i < Width1; i++)
2024
{
@@ -27,12 +31,21 @@ Plot::Plot()
2731
data[i][j] = xval;
2832

2933
xval += rand() % 3 - 1;
34+
35+
if (rand() % 5 == 1)
36+
data[i][j] = std::numeric_limits<double>::quiet_NaN();
3037
}
3138
}
3239

3340
setRotation(50, 0, -15);
3441
setZoom(1);
3542

43+
setPlotStyle(Qwt3D::FILLED);
44+
//setPlotStyle(Qwt3D::FILLEDMESH);
45+
//setPlotStyle(Qwt3D::WIREFRAME);
46+
//setPlotStyle(Qwt3D::HIDDENLINE);
47+
48+
3649
for (unsigned i=0; i!=coordinates()->axes.size(); ++i)
3750
{
3851
coordinates()->axes[i].setMajors(10);
@@ -43,7 +56,6 @@ Plot::Plot()
4356
coordinates()->axes[Y1].setLabelString("y-axis");
4457
//coordinates()->axes[Z1].setLabelString(QChar(0x38f)); // Omega - see http://www.unicode.org/charts/
4558

46-
4759
setCoordinateStyle(BOX);
4860

4961
connect(&timer, SIGNAL(timeout()), this, SLOT(UpdateData()));
@@ -69,6 +81,9 @@ void Plot::UpdateData()
6981
data[i][Width2-1] = xval;
7082

7183
xval += rand() % 3 - 1;
84+
85+
if (rand() % 5 == 1)
86+
data[i][Width2-1] = std::numeric_limits<double>::quiet_NaN();
7287
}
7388

7489
QElapsedTimer tim;
@@ -77,12 +92,11 @@ void Plot::UpdateData()
7792
// update dataset
7893
createDataset(data, Width1, Width2, 0, Width1, 0, Width2);
7994

95+
updateGL();
96+
8097
qint64 rate = tim.elapsed();
8198

8299
setTitle(QString("Dynamic Plotter Demonstration - Frame Time %1 ms").arg(rate));
83-
84-
//updateData();
85-
updateGL();
86100
}
87101

88102
int main(int argc, char **argv)

examples/dynamicplot/dynamicplot.vcproj

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,13 @@
6060
<Tool
6161
Name="VCCLCompilerTool"
6262
AdditionalOptions="-Zm200 -MP -w34100 -w34189"
63-
Optimization="4"
63+
Optimization="0"
6464
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include\QtOpenGL&quot;;&quot;$(QTDIR)\include&quot;;..\..\include;&quot;$(IntDir)\..&quot;"
65-
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_THREAD_SUPPORT,QT_DLL,QT_OPENGL_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2"
65+
PreprocessorDefinitions="_WINDOWS;UNICODE;WIN32;QT_THREAD_SUPPORT;QT_OPENGL_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_HAVE_MMX;QT_HAVE_3DNOW;QT_HAVE_SSE;QT_HAVE_MMXEXT;QT_HAVE_SSE2;DEBUG"
6666
GeneratePreprocessedFile="0"
6767
ExceptionHandling="1"
6868
RuntimeLibrary="3"
69+
FloatingPointModel="2"
6970
TreatWChar_tAsBuiltInType="false"
7071
RuntimeTypeInfo="true"
7172
AssemblerListingLocation=""
@@ -90,7 +91,7 @@
9091
Name="VCLinkerTool"
9192
IgnoreImportLibrary="true"
9293
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
93-
AdditionalDependencies="glu32.lib opengl32.lib gdi32.lib user32.lib c:\Qt\4.8.5_VC2008\lib\qtmaind.lib qwtplot3d.lib opengl32.lib glu32.lib gdi32.lib c:\Qt\4.8.5_VC2008\lib\QtOpenGLd4.lib c:\Qt\4.8.5_VC2008\lib\QtGuid4.lib c:\Qt\4.8.5_VC2008\lib\QtCored4.lib"
94+
AdditionalDependencies="glu32.lib opengl32.lib gdi32.lib user32.lib c:\Qt\4.8.5_VC2008\lib\qtmaind.lib qwtplot3d-debug.lib c:\Qt\4.8.5_VC2008\lib\QtOpenGLd4.lib c:\Qt\4.8.5_VC2008\lib\QtGuid4.lib c:\Qt\4.8.5_VC2008\lib\QtCored4.lib"
9495
OutputFile="$(OutDir)\dynamicplot.exe"
9596
SuppressStartupBanner="true"
9697
AdditionalLibraryDirectories="$(QTDIR)\lib,../../lib"
@@ -128,6 +129,7 @@
128129
ConfigurationType="1"
129130
UseOfMFC="0"
130131
ATLMinimizesCRunTimeLibraryUsage="false"
132+
WholeProgramOptimization="1"
131133
>
132134
<Tool
133135
Name="VCPreBuildEventTool"
@@ -163,12 +165,17 @@
163165
Name="VCCLCompilerTool"
164166
AdditionalOptions="-Zm200 -MP -w34100 -w34189"
165167
Optimization="2"
168+
InlineFunctionExpansion="2"
169+
EnableIntrinsicFunctions="true"
170+
FavorSizeOrSpeed="1"
171+
WholeProgramOptimization="true"
166172
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include\QtOpenGL&quot;;&quot;$(QTDIR)\include&quot;;..\..\include;&quot;$(IntDir)\..&quot;"
167173
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_THREAD_SUPPORT,QT_DLL,QT_NO_DEBUG,QT_OPENGL_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,NDEBUG"
168174
GeneratePreprocessedFile="0"
169175
ExceptionHandling="1"
170176
RuntimeLibrary="2"
171177
EnableEnhancedInstructionSet="2"
178+
FloatingPointModel="2"
172179
TreatWChar_tAsBuiltInType="false"
173180
RuntimeTypeInfo="true"
174181
AssemblerListingLocation=""

examples/freemesh/freemesh.vcproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
ConfigurationType="1"
129129
UseOfMFC="0"
130130
ATLMinimizesCRunTimeLibraryUsage="false"
131+
WholeProgramOptimization="1"
131132
>
132133
<Tool
133134
Name="VCPreBuildEventTool"
@@ -163,11 +164,17 @@
163164
Name="VCCLCompilerTool"
164165
AdditionalOptions="-Zm200 -MP -w34100 -w34189"
165166
Optimization="2"
167+
InlineFunctionExpansion="2"
168+
EnableIntrinsicFunctions="true"
169+
FavorSizeOrSpeed="1"
170+
WholeProgramOptimization="true"
166171
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include\QtOpenGL&quot;;&quot;$(QTDIR)\include&quot;;..\..\include;&quot;$(IntDir)\..&quot;"
167172
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_THREAD_SUPPORT,QT_DLL,QT_NO_DEBUG,QT_OPENGL_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,NDEBUG"
168173
GeneratePreprocessedFile="0"
169174
ExceptionHandling="1"
170175
RuntimeLibrary="2"
176+
EnableEnhancedInstructionSet="2"
177+
FloatingPointModel="2"
171178
TreatWChar_tAsBuiltInType="false"
172179
RuntimeTypeInfo="true"
173180
AssemblerListingLocation=""

examples/mesh/mesh.vcproj

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
Name="VCLinkerTool"
9191
IgnoreImportLibrary="true"
9292
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
93-
AdditionalDependencies="glu32.lib opengl32.lib gdi32.lib user32.lib c:\Qt\4.8.5_VC2008\lib\qtmaind.lib qwtplot3d.lib opengl32.lib glu32.lib gdi32.lib c:\Qt\4.8.5_VC2008\lib\QtOpenGLd4.lib c:\Qt\4.8.5_VC2008\lib\QtGuid4.lib c:\Qt\4.8.5_VC2008\lib\QtCored4.lib"
93+
AdditionalDependencies="glu32.lib opengl32.lib gdi32.lib user32.lib c:\Qt\4.8.5_VC2008\lib\qtmaind.lib qwtplot3d-debug.lib c:\Qt\4.8.5_VC2008\lib\QtOpenGLd4.lib c:\Qt\4.8.5_VC2008\lib\QtGuid4.lib c:\Qt\4.8.5_VC2008\lib\QtCored4.lib"
9494
OutputFile="$(OutDir)\mesh.exe"
9595
SuppressStartupBanner="true"
9696
AdditionalLibraryDirectories="$(QTDIR)\lib,../../lib"
@@ -128,6 +128,7 @@
128128
ConfigurationType="1"
129129
UseOfMFC="0"
130130
ATLMinimizesCRunTimeLibraryUsage="false"
131+
WholeProgramOptimization="1"
131132
>
132133
<Tool
133134
Name="VCPreBuildEventTool"
@@ -163,11 +164,17 @@
163164
Name="VCCLCompilerTool"
164165
AdditionalOptions="-Zm200 -MP -w34100 -w34189"
165166
Optimization="2"
167+
InlineFunctionExpansion="2"
168+
EnableIntrinsicFunctions="true"
169+
FavorSizeOrSpeed="1"
170+
WholeProgramOptimization="true"
166171
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include\QtOpenGL&quot;;&quot;$(QTDIR)\include&quot;;..\..\include;&quot;$(IntDir)\..&quot;"
167172
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_THREAD_SUPPORT,QT_DLL,QT_NO_DEBUG,QT_OPENGL_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,NDEBUG"
168173
GeneratePreprocessedFile="0"
169174
ExceptionHandling="1"
170175
RuntimeLibrary="2"
176+
EnableEnhancedInstructionSet="2"
177+
FloatingPointModel="2"
171178
TreatWChar_tAsBuiltInType="false"
172179
RuntimeTypeInfo="true"
173180
AssemblerListingLocation=""

examples/mesh/src/meshmainwindow.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ MeshMainWindow::MeshMainWindow( QWidget* parent )
110110
dataWidget = new GridPlot(frame);
111111
grid->addWidget( dataWidget, 0, 0 );
112112

113+
dataWidget->setRenderThreadsCount(2);
113114

114115
connect( coord, SIGNAL( triggered( QAction* ) ), this, SLOT( pickCoordSystem( QAction* ) ) );
115116
connect( plotstyle, SIGNAL( triggered( QAction* ) ), this, SLOT( pickPlotStyle( QAction* ) ) );

examples/plotlets/plotlets.vcproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
ConfigurationType="1"
129129
UseOfMFC="0"
130130
ATLMinimizesCRunTimeLibraryUsage="false"
131+
WholeProgramOptimization="1"
131132
>
132133
<Tool
133134
Name="VCPreBuildEventTool"
@@ -163,11 +164,17 @@
163164
Name="VCCLCompilerTool"
164165
AdditionalOptions="-Zm200 -MP -w34100 -w34189"
165166
Optimization="2"
167+
InlineFunctionExpansion="2"
168+
EnableIntrinsicFunctions="true"
169+
FavorSizeOrSpeed="1"
170+
WholeProgramOptimization="true"
166171
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include\QtOpenGL&quot;;&quot;$(QTDIR)\include&quot;;..\..\include;&quot;$(IntDir)\..&quot;;."
167172
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_THREAD_SUPPORT,QT_DLL,QT_NO_DEBUG,QT_OPENGL_LIB,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,NDEBUG"
168173
GeneratePreprocessedFile="0"
169174
ExceptionHandling="1"
170175
RuntimeLibrary="2"
176+
EnableEnhancedInstructionSet="2"
177+
FloatingPointModel="2"
171178
TreatWChar_tAsBuiltInType="false"
172179
RuntimeTypeInfo="true"
173180
AssemblerListingLocation=""

include/qwt3d_colorlegend.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,27 @@ class QWT3D_EXPORT ColorLegend : public Drawable
1919
{
2020

2121
public:
22-
22+
2323
//! Possible anchor points for caption and axis
2424
enum SCALEPOSITION
2525
{
2626
Top, //!< scale on top
27-
Bottom, //!< scale on bottom
27+
Bottom, //!< scale on bottom
2828
Left, //!< scale left
2929
Right //!< scale right
3030
};
31-
31+
3232
//! Orientation of the legend
3333
enum ORIENTATION
3434
{
35-
BottomTop, //!< Positionate the legend vertically, the lowest color index is on the bottom
35+
BottomTop, //!< Positionate the legend vertically, the lowest color index is on the bottom
3636
LeftRight //!< Positionate the legend horizontally, the lowest color index is on left side
3737
};
3838

3939
ColorLegend(); //!< Standard constructor
4040

41-
void draw(); //!< Draws the object. You should not use this explicitely - the function is called by updateGL().
42-
41+
void draw(); //!< Draws the object. You should not use this explicitly - the function is called by updateGL().
42+
4343
void setRelPosition(Qwt3D::Tuple relMin, Qwt3D::Tuple relMax); //!< Sets the relative position of the legend inside widget
4444
void setOrientation(ORIENTATION, SCALEPOSITION); //!< Sets legend orientation and scale position
4545
void setLimits(double start, double stop); //!< Sets the limit of the scale.
@@ -48,18 +48,18 @@ class QWT3D_EXPORT ColorLegend : public Drawable
4848
void drawScale(bool val) { showaxis_ = val; } //!< Sets whether a scale will be drawn.
4949
void drawNumbers(bool val) { axis_.setNumbers(val); } //!< Sets whether the scale will have scale numbers.
5050
void setAutoScale(bool val); //!< Sets, whether the axis is autoscaled or not.
51-
void setScale(Qwt3D::Scale *scale); //!< Sets another scale
52-
void setScale(Qwt3D::SCALETYPE); //!< Sets one of the predefined scale types
51+
void setScale(Qwt3D::Scale *scale); //!< Sets another scale
52+
void setScale(Qwt3D::SCALETYPE); //!< Sets one of the predefined scale types
5353

5454
void setTitleString(QString const& s); //!< Sets the legends caption string.
55-
55+
5656
//! Sets the legends caption font.
5757
void setTitleFont(QString const& family, int pointSize, int weight = QFont::Normal, bool italic = false);
5858

5959
Qwt3D::ColorVector colors; //!< The color vector
6060

6161
private:
62-
62+
6363
Qwt3D::Label caption_;
6464
Qwt3D::ParallelEpiped geometry() const { return pe_;}
6565
void setGeometryInternal();

include/qwt3d_gridplot.h

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,9 @@ public slots:
9292
public:
9393
CVertexProcessor();
9494

95-
void setup(int dataWidth, int dataLength, const GridData& data, int row, int step = 1,
96-
bool m_colorize = true, const Color* colorData = NULL);
95+
void setup(int dataWidth, int dataLength, const GridData& data, int row, int step,
96+
bool useColorMap, const Qwt3D::RGBA& fixedColor, const Color* colorData = NULL,
97+
bool showMesh = false, const Qwt3D::RGBA& meshColor = Qwt3D::RGBA(0,0,0,0));
9798

9899
virtual void run();
99100

@@ -103,17 +104,28 @@ public slots:
103104
void processVertex(bool& stripStarted, int i, int j, int& index, int& size);
104105
void endVertex(int& index, int& size);
105106

107+
void processLineStripVertex(bool& stripStarted, int i, int j, int& index, int& size);
108+
void endLineVertex(int& index, int& size);
109+
106110
int m_dataWidth, m_dataLength, m_row, m_step;
107111
TripleVector m_draw_normals, m_draw_vertices;
108112
ColorVector m_draw_colors;
109113
std::vector< QPair<int,int> > m_drawList;
110114
const GridData* m_data;
115+
bool m_drawFill, m_useColorMap;
116+
Qwt3D::RGBA m_fixedColor;
111117
const Color* m_colorData;
112-
bool m_colorize;
118+
119+
bool m_drawMesh;
120+
Qwt3D::RGBA m_meshColor;
121+
TripleVector m_mesh_vertices;
122+
ColorVector m_mesh_colors;
123+
std::vector< QPair<int,int> > m_drawMeshList;
113124
};
114125

115126
int m_threadsCount;
116127
CVertexProcessor m_workers[10];
128+
bool m_useThreads;
117129

118130
void createNormals(const Plotlet& pl);
119131
void data2Floor(const Plotlet& pl);

qwtplot3d-vc2008.sln

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,26 @@ Microsoft Visual Studio Solution File, Format Version 10.00
33
# Visual C++ Express 2008
44
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qwtplot3d-vs2008", "qwtplot3d-vc2008.vcproj", "{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}"
55
EndProject
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dynamicplot", "examples\dynamicplot\dynamicplot.vcproj", "{83D7D95A-3053-4945-9351-5CB40347CF65}"
7+
ProjectSection(ProjectDependencies) = postProject
8+
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8} = {25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}
9+
EndProjectSection
10+
EndProject
11+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plotlets", "examples\plotlets\plotlets.vcproj", "{CF1ACDB7-B2C5-3DB4-A764-A121F43B6BC6}"
12+
ProjectSection(ProjectDependencies) = postProject
13+
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8} = {25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}
14+
EndProjectSection
15+
EndProject
16+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freemesh", "examples\freemesh\freemesh.vcproj", "{9D5DB26E-6468-3301-BA12-40E12D002C56}"
17+
ProjectSection(ProjectDependencies) = postProject
18+
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8} = {25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}
19+
EndProjectSection
20+
EndProject
21+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mesh", "examples\mesh\mesh.vcproj", "{8D335988-DF3F-3E28-9289-5772249B420F}"
22+
ProjectSection(ProjectDependencies) = postProject
23+
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8} = {25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}
24+
EndProjectSection
25+
EndProject
626
Global
727
GlobalSection(SolutionConfigurationPlatforms) = preSolution
828
Debug|Win32 = Debug|Win32
@@ -13,6 +33,22 @@ Global
1333
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}.Debug|Win32.Build.0 = Debug|Win32
1434
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}.Release|Win32.ActiveCfg = Release|Win32
1535
{25E04C55-C6D9-3425-B9FF-0F2F5CE680E8}.Release|Win32.Build.0 = Release|Win32
36+
{83D7D95A-3053-4945-9351-5CB40347CF65}.Debug|Win32.ActiveCfg = Debug|Win32
37+
{83D7D95A-3053-4945-9351-5CB40347CF65}.Debug|Win32.Build.0 = Debug|Win32
38+
{83D7D95A-3053-4945-9351-5CB40347CF65}.Release|Win32.ActiveCfg = Release|Win32
39+
{83D7D95A-3053-4945-9351-5CB40347CF65}.Release|Win32.Build.0 = Release|Win32
40+
{CF1ACDB7-B2C5-3DB4-A764-A121F43B6BC6}.Debug|Win32.ActiveCfg = Debug|Win32
41+
{CF1ACDB7-B2C5-3DB4-A764-A121F43B6BC6}.Debug|Win32.Build.0 = Debug|Win32
42+
{CF1ACDB7-B2C5-3DB4-A764-A121F43B6BC6}.Release|Win32.ActiveCfg = Release|Win32
43+
{CF1ACDB7-B2C5-3DB4-A764-A121F43B6BC6}.Release|Win32.Build.0 = Release|Win32
44+
{9D5DB26E-6468-3301-BA12-40E12D002C56}.Debug|Win32.ActiveCfg = Debug|Win32
45+
{9D5DB26E-6468-3301-BA12-40E12D002C56}.Debug|Win32.Build.0 = Debug|Win32
46+
{9D5DB26E-6468-3301-BA12-40E12D002C56}.Release|Win32.ActiveCfg = Release|Win32
47+
{9D5DB26E-6468-3301-BA12-40E12D002C56}.Release|Win32.Build.0 = Release|Win32
48+
{8D335988-DF3F-3E28-9289-5772249B420F}.Debug|Win32.ActiveCfg = Debug|Win32
49+
{8D335988-DF3F-3E28-9289-5772249B420F}.Debug|Win32.Build.0 = Debug|Win32
50+
{8D335988-DF3F-3E28-9289-5772249B420F}.Release|Win32.ActiveCfg = Release|Win32
51+
{8D335988-DF3F-3E28-9289-5772249B420F}.Release|Win32.Build.0 = Release|Win32
1652
EndGlobalSection
1753
GlobalSection(SolutionProperties) = preSolution
1854
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)