Path: blob/master/Windows/GEDebugger/CtrlDisplayListView.h
5683 views
#pragma once12#include <algorithm>3#include "Common/CommonWindows.h"4#include "GPU/GPUDefinitions.h"56class CtrlDisplayListView {7HWND wnd;8RECT rect;9DisplayList list;1011HFONT font;12HFONT boldfont;13u32 windowStart;14u32 curAddress;15u32 selectRangeStart;16u32 selectRangeEnd;1718int visibleRows;19int rowHeight;20int instructionSize;21bool hasFocus;22bool validDisplayList;2324struct {25int addressStart;26int opcodeStart;27} pixelPositions;2829void toggleBreakpoint();30void PromptBreakpointCond();3132public:33CtrlDisplayListView(HWND _wnd);34~CtrlDisplayListView();35static void registerClass();36static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);37static CtrlDisplayListView * getFrom(HWND wnd);3839HWND GetHWND() {40return wnd;41}4243void onPaint(WPARAM wParam, LPARAM lParam);44void onKeyDown(WPARAM wParam, LPARAM lParam);45void onMouseDown(WPARAM wParam, LPARAM lParam, int button);46void onMouseUp(WPARAM wParam, LPARAM lParam, int button);47void onVScroll(WPARAM wParam, LPARAM lParam);4849void redraw();50void setDisplayList(DisplayList& displayList)51{52validDisplayList = true;53list = displayList;54gotoAddr(list.pc);55}56void clearDisplayList()57{58validDisplayList = false;59}6061void scrollWindow(int lines)62{63windowStart += lines*instructionSize;64redraw();65}6667void gotoAddr(unsigned int addr)68{69u32 windowEnd = windowStart+visibleRows*instructionSize;70u32 newAddress = addr&(~(instructionSize-1));7172if (newAddress < windowStart || newAddress >= windowEnd)73{74windowStart = newAddress-visibleRows/2*instructionSize;75}7677setCurAddress(newAddress);78redraw();79}8081void setCurAddress(u32 newAddress, bool extend = false)82{83u32 after = newAddress + instructionSize;84curAddress = newAddress;85selectRangeStart = extend ? std::min(selectRangeStart, newAddress) : newAddress;86selectRangeEnd = extend ? std::max(selectRangeEnd, after) : after;87}8889void scrollAddressIntoView();90bool curAddressIsVisible();91};929394