Play-/Source/ui_qt/win32/DebugSupport/FrameDebugger/PixelBufferView.h

74 lines
1.6 KiB
C
Raw Normal View History

#pragma once
#include "win32/Window.h"
#include "bitmap/Bitmap.h"
#include "PixelBufferViewOverlay.h"
#include <memory>
#include <vector>
#include "GSH_OpenGL_Framedebugger.h"
#include "../OutputWnd.h"
class CPixelBufferView : public Framework::Win32::CWindow
{
public:
typedef std::pair<std::string, Framework::CBitmap> PixelBuffer;
typedef std::vector<PixelBuffer> PixelBufferArray;
2018-04-30 21:01:23 +01:00
CPixelBufferView(HWND, const RECT&);
virtual ~CPixelBufferView() = default;
2018-04-30 21:01:23 +01:00
void SetPixelBuffers(PixelBufferArray);
2018-04-30 21:01:23 +01:00
void FitBitmap();
bool m_init = false;
2020-01-27 20:46:14 +00:00
protected:
void Refresh();
long OnPaint() override;
long OnEraseBkgnd() override;
2018-04-30 21:01:23 +01:00
long OnCommand(unsigned short, unsigned short, HWND) override;
long OnSize(unsigned int, unsigned int, unsigned int) override;
2018-04-30 21:01:23 +01:00
long OnLeftButtonDown(int, int) override;
long OnLeftButtonUp(int, int) override;
2018-04-30 21:01:23 +01:00
long OnMouseMove(WPARAM, int, int) override;
2018-04-30 21:01:23 +01:00
long OnMouseWheel(int, int, short) override;
private:
struct VERTEX
{
2018-04-30 21:01:23 +01:00
float position[3];
float texCoord[2];
};
2018-04-30 21:01:23 +01:00
const PixelBuffer* GetSelectedPixelBuffer();
void CreateSelectedPixelBufferTexture();
2018-04-30 21:01:23 +01:00
void OnSaveBitmap();
static Framework::CBitmap ConvertBGRToRGB(Framework::CBitmap);
2018-04-30 21:01:23 +01:00
void DrawCheckerboard();
void DrawPixelBuffer();
2018-04-30 21:01:23 +01:00
PixelBufferArray m_pixelBuffers;
2018-04-30 21:01:23 +01:00
std::unique_ptr<CPixelBufferViewOverlay> m_overlay;
2018-04-30 21:01:23 +01:00
float m_panX;
float m_panY;
float m_zoomFactor;
2018-04-30 21:01:23 +01:00
bool m_dragging;
int m_dragBaseX;
int m_dragBaseY;
2018-04-30 21:01:23 +01:00
float m_panXDragBase;
float m_panYDragBase;
std::unique_ptr<CGSH_OpenGLFramedebugger> m_gs;
std::unique_ptr<COutputWnd> m_handlerOutputWindow;
};