Avoid void* for the sake of forward declaration

This commit is contained in:
Maksym Walczak 2022-01-04 12:09:48 +01:00
parent a55e33824b
commit 281199e278
2 changed files with 8 additions and 9 deletions

View File

@ -155,23 +155,20 @@ private:
namespace nimagna { namespace nimagna {
PoseTracking::PoseTracking(const char* calculatorGraphConfigFile) { PoseTracking::PoseTracking(const char* calculatorGraphConfigFile) {
myInstance = new PoseTrackingImpl(calculatorGraphConfigFile); mImplementation = new PoseTrackingImpl(calculatorGraphConfigFile);
} }
bool PoseTracking::processFrame(const cv_wrapper::Mat& inputRGB8Bit) { bool PoseTracking::processFrame(const cv_wrapper::Mat& inputRGB8Bit) {
auto* instance = static_cast<PoseTrackingImpl*>(myInstance);
const auto frame = cv::Mat(inputRGB8Bit.rows, inputRGB8Bit.cols, CV_8UC3, inputRGB8Bit.data); const auto frame = cv::Mat(inputRGB8Bit.rows, inputRGB8Bit.cols, CV_8UC3, inputRGB8Bit.data);
return instance->processFrame(frame); return mImplementation->processFrame(frame);
} }
cv_wrapper::Point3f* PoseTracking::lastDetectedLandmarks() { cv_wrapper::Point3f* PoseTracking::lastDetectedLandmarks() {
auto* instance = static_cast<PoseTrackingImpl*>(myInstance); return mImplementation->lastDetectedLandmarks();
return instance->lastDetectedLandmarks();
} }
cv_wrapper::Mat PoseTracking::lastSegmentedFrame() { cv_wrapper::Mat PoseTracking::lastSegmentedFrame() {
auto* instance = static_cast<PoseTrackingImpl*>(myInstance); const cv::Mat result = mImplementation->lastSegmentedFrame();
const cv::Mat result = instance->lastSegmentedFrame();
return cv_wrapper::Mat(result.rows, result.cols, result.data); return cv_wrapper::Mat(result.rows, result.cols, result.data);
} }

View File

@ -7,6 +7,8 @@
#define DLLEXPORT __declspec(dllimport) #define DLLEXPORT __declspec(dllimport)
#endif #endif
class PoseTrackingImpl;
namespace nimagna { namespace nimagna {
namespace cv_wrapper { namespace cv_wrapper {
struct Point2f { struct Point2f {
@ -85,14 +87,14 @@ namespace nimagna {
}; };
PoseTracking(const char* calculatorGraphConfigFile); PoseTracking(const char* calculatorGraphConfigFile);
~PoseTracking() { delete myInstance; } ~PoseTracking() { delete mImplementation; }
bool processFrame(const cv_wrapper::Mat& inputRGB8Bit); bool processFrame(const cv_wrapper::Mat& inputRGB8Bit);
cv_wrapper::Mat lastSegmentedFrame(); cv_wrapper::Mat lastSegmentedFrame();
cv_wrapper::Point3f* lastDetectedLandmarks(); cv_wrapper::Point3f* lastDetectedLandmarks();
private: private:
void* myInstance; PoseTrackingImpl* mImplementation;
}; };
} }