Skip to content

Commit d283d47

Browse files
committed
Remove indentation around 'imshow()' functions
The code had 1-2 extra levels of indentation.
1 parent de33a57 commit d283d47

File tree

1 file changed

+65
-63
lines changed

1 file changed

+65
-63
lines changed

matplotlibcpp.h

Lines changed: 65 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -589,77 +589,79 @@ bool hist(const std::vector<Numeric>& y, long bins=10,std::string color="b",
589589
}
590590

591591
#ifndef WITHOUT_NUMPY
592-
namespace internal {
593-
inline void imshow(void *ptr, const NPY_TYPES type, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords, PyObject** out)
594-
{
595-
assert(type == NPY_UINT8 || type == NPY_FLOAT);
596-
assert(colors == 1 || colors == 3 || colors == 4);
597-
598-
detail::_interpreter::get(); //interpreter needs to be initialized for the numpy commands to work
599-
600-
// construct args
601-
npy_intp dims[3] = { rows, columns, colors };
602-
PyObject *args = PyTuple_New(1);
603-
PyTuple_SetItem(args, 0, PyArray_SimpleNewFromData(colors == 1 ? 2 : 3, dims, type, ptr));
604-
605-
// construct keyword args
606-
PyObject* kwargs = PyDict_New();
607-
for(std::map<std::string, std::string>::const_iterator it = keywords.begin(); it != keywords.end(); ++it)
608-
{
609-
PyDict_SetItemString(kwargs, it->first.c_str(), PyUnicode_FromString(it->second.c_str()));
610-
}
611-
612-
PyObject *res = PyObject_Call(detail::_interpreter::get().s_python_function_imshow, args, kwargs);
613-
Py_DECREF(args);
614-
Py_DECREF(kwargs);
615-
if (!res)
616-
throw std::runtime_error("Call to imshow() failed");
617-
if (out)
618-
*out = res;
619-
else
620-
Py_DECREF(res);
621-
}
622-
}
592+
namespace internal {
623593

624-
inline void imshow(const unsigned char *ptr, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords = {}, PyObject** out = nullptr)
625-
{
626-
internal::imshow((void *) ptr, NPY_UINT8, rows, columns, colors, keywords, out);
627-
}
594+
inline void imshow(void *ptr, const NPY_TYPES type, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords, PyObject** out)
595+
{
596+
assert(type == NPY_UINT8 || type == NPY_FLOAT);
597+
assert(colors == 1 || colors == 3 || colors == 4);
598+
599+
detail::_interpreter::get(); //interpreter needs to be initialized for the numpy commands to work
628600

629-
inline void imshow(const float *ptr, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords = {}, PyObject** out = nullptr)
601+
// construct args
602+
npy_intp dims[3] = { rows, columns, colors };
603+
PyObject *args = PyTuple_New(1);
604+
PyTuple_SetItem(args, 0, PyArray_SimpleNewFromData(colors == 1 ? 2 : 3, dims, type, ptr));
605+
606+
// construct keyword args
607+
PyObject* kwargs = PyDict_New();
608+
for(std::map<std::string, std::string>::const_iterator it = keywords.begin(); it != keywords.end(); ++it)
630609
{
631-
internal::imshow((void *) ptr, NPY_FLOAT, rows, columns, colors, keywords, out);
610+
PyDict_SetItemString(kwargs, it->first.c_str(), PyUnicode_FromString(it->second.c_str()));
632611
}
633612

634-
#ifdef WITH_OPENCV
635-
void imshow(const cv::Mat &image, const std::map<std::string, std::string> &keywords = {})
636-
{
637-
// Convert underlying type of matrix, if needed
638-
cv::Mat image2;
639-
NPY_TYPES npy_type = NPY_UINT8;
640-
switch (image.type() & CV_MAT_DEPTH_MASK) {
641-
case CV_8U:
642-
image2 = image;
643-
break;
644-
case CV_32F:
645-
image2 = image;
646-
npy_type = NPY_FLOAT;
647-
break;
648-
default:
649-
image.convertTo(image2, CV_MAKETYPE(CV_8U, image.channels()));
650-
}
613+
PyObject *res = PyObject_Call(detail::_interpreter::get().s_python_function_imshow, args, kwargs);
614+
Py_DECREF(args);
615+
Py_DECREF(kwargs);
616+
if (!res)
617+
throw std::runtime_error("Call to imshow() failed");
618+
if (out)
619+
*out = res;
620+
else
621+
Py_DECREF(res);
622+
}
651623

652-
// If color image, convert from BGR to RGB
653-
switch (image2.channels()) {
654-
case 3:
655-
cv::cvtColor(image2, image2, CV_BGR2RGB);
656-
break;
657-
case 4:
658-
cv::cvtColor(image2, image2, CV_BGRA2RGBA);
659-
}
624+
} // namespace internal
625+
626+
inline void imshow(const unsigned char *ptr, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords = {}, PyObject** out = nullptr)
627+
{
628+
internal::imshow((void *) ptr, NPY_UINT8, rows, columns, colors, keywords, out);
629+
}
660630

661-
internal::imshow(image2.data, npy_type, image2.rows, image2.cols, image2.channels(), keywords);
631+
inline void imshow(const float *ptr, const int rows, const int columns, const int colors, const std::map<std::string, std::string> &keywords = {}, PyObject** out = nullptr)
632+
{
633+
internal::imshow((void *) ptr, NPY_FLOAT, rows, columns, colors, keywords, out);
634+
}
635+
636+
#ifdef WITH_OPENCV
637+
void imshow(const cv::Mat &image, const std::map<std::string, std::string> &keywords = {})
638+
{
639+
// Convert underlying type of matrix, if needed
640+
cv::Mat image2;
641+
NPY_TYPES npy_type = NPY_UINT8;
642+
switch (image.type() & CV_MAT_DEPTH_MASK) {
643+
case CV_8U:
644+
image2 = image;
645+
break;
646+
case CV_32F:
647+
image2 = image;
648+
npy_type = NPY_FLOAT;
649+
break;
650+
default:
651+
image.convertTo(image2, CV_MAKETYPE(CV_8U, image.channels()));
662652
}
653+
654+
// If color image, convert from BGR to RGB
655+
switch (image2.channels()) {
656+
case 3:
657+
cv::cvtColor(image2, image2, CV_BGR2RGB);
658+
break;
659+
case 4:
660+
cv::cvtColor(image2, image2, CV_BGRA2RGBA);
661+
}
662+
663+
internal::imshow(image2.data, npy_type, image2.rows, image2.cols, image2.channels(), keywords);
664+
}
663665
#endif // WITH_OPENCV
664666
#endif // WITHOUT_NUMPY
665667

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy