From dfef42f94e1c56730c0dd47b275539ee639d1606 Mon Sep 17 00:00:00 2001
From: Anatoly Baksheev <no@email>
Date: Sat, 16 Nov 2013 20:56:42 +0400
Subject: [PATCH] Fixed Viz compilation: removed CV_EXPORTS from
 cv::viz::Color. The macro forced instantiation of all Matx<double, 4, 1>
 constructors and triggered StaticAssert there.

---
 modules/viz/include/opencv2/viz/types.hpp | 22 ++++++++++++++++++++--
 modules/viz/src/interactor_style.h        |  2 +-
 modules/viz/src/types.cpp                 | 20 --------------------
 3 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/modules/viz/include/opencv2/viz/types.hpp b/modules/viz/include/opencv2/viz/types.hpp
index 5a3667b828..3cccfa06fe 100644
--- a/modules/viz/include/opencv2/viz/types.hpp
+++ b/modules/viz/include/opencv2/viz/types.hpp
@@ -57,7 +57,7 @@ namespace cv
 {
     namespace viz
     {
-        class CV_EXPORTS Color : public Scalar
+        class Color : public Scalar
         {
         public:
             Color();
@@ -169,8 +169,26 @@ namespace cv
             Vec2f principal_point_;
             Vec2f focal_;
         };
-
     } /* namespace viz */
 } /* namespace cv */
 
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+/// cv::viz::Color
+
+inline cv::viz::Color::Color() : Scalar(0, 0, 0) {}
+inline cv::viz::Color::Color(double gray) : Scalar(gray, gray, gray) {}
+inline cv::viz::Color::Color(double blue, double green, double red) : Scalar(blue, green, red) {}
+inline cv::viz::Color::Color(const Scalar& color) : Scalar(color) {}
+
+inline cv::viz::Color cv::viz::Color::black()   { return Color(  0,   0, 0); }
+inline cv::viz::Color cv::viz::Color::green()   { return Color(  0, 255, 0); }
+inline cv::viz::Color cv::viz::Color::blue()    { return Color(255,   0, 0); }
+inline cv::viz::Color cv::viz::Color::cyan()    { return Color(255, 255, 0); }
+inline cv::viz::Color cv::viz::Color::red()     { return Color(  0,   0, 255); }
+inline cv::viz::Color cv::viz::Color::yellow()  { return Color(  0, 255, 255); }
+inline cv::viz::Color cv::viz::Color::magenta() { return Color(255,   0, 255); }
+inline cv::viz::Color cv::viz::Color::white()   { return Color(255, 255, 255); }
+inline cv::viz::Color cv::viz::Color::gray()    { return Color(128, 128, 128); }
+
+
 #endif
diff --git a/modules/viz/src/interactor_style.h b/modules/viz/src/interactor_style.h
index 7b80ee94b2..30d8529163 100644
--- a/modules/viz/src/interactor_style.h
+++ b/modules/viz/src/interactor_style.h
@@ -49,7 +49,7 @@
 #ifndef __OPENCV_VIZ_INTERACTOR_STYLE_H__
 #define __OPENCV_VIZ_INTERACTOR_STYLE_H__
 
-#include <opencv2/viz/types.hpp>
+#include "precomp.hpp"
 
 namespace cv
 {
diff --git a/modules/viz/src/types.cpp b/modules/viz/src/types.cpp
index 5528fbcfc2..861a783181 100644
--- a/modules/viz/src/types.cpp
+++ b/modules/viz/src/types.cpp
@@ -48,26 +48,6 @@
 
 #include "precomp.hpp"
 
-//////////////////////////////////////////////////////////////////////////////////////////////////////
-/// cv::viz::Color
-
-cv::viz::Color::Color() : Scalar(0, 0, 0) {}
-cv::viz::Color::Color(double gray) : Scalar(gray, gray, gray) {}
-cv::viz::Color::Color(double blue, double green, double red) : Scalar(blue, green, red) {}
-cv::viz::Color::Color(const Scalar& color) : Scalar(color) {}
-
-cv::viz::Color cv::viz::Color::black()   { return Color(  0,   0, 0); }
-cv::viz::Color cv::viz::Color::green()   { return Color(  0, 255, 0); }
-cv::viz::Color cv::viz::Color::blue()    { return Color(255,   0, 0); }
-cv::viz::Color cv::viz::Color::cyan()    { return Color(255, 255, 0); }
-
-cv::viz::Color cv::viz::Color::red()     { return Color(  0,   0, 255); }
-cv::viz::Color cv::viz::Color::yellow() { return Color(  0, 255, 255); }
-cv::viz::Color cv::viz::Color::magenta()  { return Color(255,   0, 255); }
-cv::viz::Color cv::viz::Color::white()   { return Color(255, 255, 255); }
-
-cv::viz::Color cv::viz::Color::gray()    { return Color(128, 128, 128); }
-
 ////////////////////////////////////////////////////////////////////
 /// cv::viz::KeyboardEvent