diff --git a/ctl/explainCanvas.cpp b/ctl/explainCanvas.cpp index 0b34b3e..5a1967b 100644 --- a/ctl/explainCanvas.cpp +++ b/ctl/explainCanvas.cpp @@ -21,6 +21,7 @@ BEGIN_EVENT_TABLE(ExplainCanvas, wxShapeCanvas) EVT_MOTION(ExplainCanvas::OnMouseMotion) + EVT_MOUSEWHEEL(ExplainCanvas::OnMouseWhell) END_EVENT_TABLE() @@ -102,7 +103,7 @@ void ExplainCanvas::SetExplainString(const wxString &str) int maxLevel = 0; wxStringTokenizer lines(flt, wxT("\n")); - + bool isstat = false; while (lines.HasMoreTokens()) { wxString tmp = lines.GetNextToken(); @@ -144,6 +145,21 @@ void ExplainCanvas::SetExplainString(const wxString &str) continue; } } + else { + if ((line.StartsWith("Query Identifier:") || + line.StartsWith("Planning:") || + line.StartsWith("Planning Time:") || + line.StartsWith("Execution Time:")) + && !isstat + ) + isstat = true; + else + if (last != rootShape && isstat) { + // all rows append condition + last->SetConditionAndReplaceLabel(line); + continue; + } + } while (last != rootShape && level <= last->GetLevel()) last = last->GetUpper(); @@ -216,9 +232,14 @@ void ExplainCanvas::SetExplainString(const wxString &str) int h = (rootShape->totalShapes * yoffs + y0 * 2 + PIXPERUNIT - 1) / PIXPERUNIT; SetScrollbars(PIXPERUNIT, PIXPERUNIT, w, h); + isneedoptimizedraw = false; + if (rootShape->totalShapes > 300) isneedoptimizedraw = true; } - +void ExplainCanvas::OnMouseWhell(wxMouseEvent& ev) +{ + HandleOnMouseWheel(ev); +} void ExplainCanvas::OnMouseMotion(wxMouseEvent &ev) { ev.Skip(true); diff --git a/ctl/explainShape.cpp b/ctl/explainShape.cpp index 207ec72..7ed166a 100644 --- a/ctl/explainShape.cpp +++ b/ctl/explainShape.cpp @@ -21,6 +21,8 @@ #include #include "images/ex_aggregate.pngc" +#include "images/ex_partial_aggregate.pngc" +#include "images/ex_finalize_aggregate.pngc" #include "images/ex_append.pngc" #include "images/ex_bmp_and.pngc" #include "images/ex_bmp_heap.pngc" @@ -80,6 +82,7 @@ ExplainShape::ExplainShape(const wxImage &bmp, const wxString &description, long { SetBitmap(wxBitmap(bmp)); SetLabel(description, tokenNo, detailNo); + SetDisableLabel(true); kidCount = 0; totalShapes = 0; usedShapes = 0; @@ -135,21 +138,132 @@ void ExplainShape::OnDraw(wxDC &dc) // We do not draw the root shape if (m_rootShape) return; + wxRect trg=GetCanvas()->GetClientRect(); + wxMouseEvent ev; + ev.m_x = 0; + ev.m_y = 0; + wxPoint logPos(ev.GetLogicalPosition(dc)); + ev.m_x = trg.x+trg.width; + ev.m_y = trg.height; + wxPoint logPos2(ev.GetLogicalPosition(dc)); + wxRect cliprect(logPos, logPos2); + double width = 0.0, height = 0.0; + GetBoundingBoxMin(&width,&height); + wxRect sp((int)(GetX()), (int)(GetY()), (int) (width), (int)(height)); + //int x = (int)(GetX() + (width )); + //int y = (int)(GetY() + (height)); + if (!cliprect.Intersects(sp)) { + if (dynamic_cast(GetCanvas())->isneedoptimizedraw) return; + + } + // dynamic bitmap + bool bmpdynamic = false; + wxBitmap bmpm(bmp.GetWidth(),bmp.GetHeight()); + if (label.StartsWith("Memoize")) { + wxPen p = dc.GetPen(); + wxMemoryDC dc2; + dc2.SelectObject(bmpm); + //dc2.SetBackgroundMode(wxBRUSHSTYLE_SOLID); + dc2.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW))); + dc2.Clear(); + int w = bmpm.GetWidth(); + int h = bmpm.GetHeight(); + dc2.DrawRectangle(0, 0, w, h); + wxRegEx r("Hits: (\\d+) Misses: (\\d+) Evictions: (\\d+) Overflows: (\\d+) Memory Usage: (\\d+\\S+)"); + long hit=0, mis=0, evi=0, ovr=0; + wxString mem; + int x = 0, y = 0; + int tw, th; + wxString txt = _("Cache"); + wxFont f(GetCanvas()->GetFont()); + f.SetPointSize(8); + mem = f.GetNativeFontInfoDesc(); + dc2.SetFont(f); + dc2.SetPen(p); + //dc2.SetTextForeground(*wxBLACK); + //dc2.SetTextBackground(*wxWHITE); + dc2.GetTextExtent(txt, &tw, &th); + int border = 2; + y += border; + x = (w - tw) / 2; + dc2.DrawText(txt, x, y); + y += th+ border; + //dc2.DrawText("TEst", 0, 0); + mem = wxEmptyString; + if (r.Matches(condition)) { + hit=StrToLong( r.GetMatch(condition, 1)); + mis = StrToLong(r.GetMatch(condition, 2)); + evi = StrToLong(r.GetMatch(condition, 3)); + ovr = StrToLong(r.GetMatch(condition, 4)); + mem = (r.GetMatch(condition, 5)); + } + wxRect rect(border, y, w - 2 * border, th / 2); + //dc2.DrawRectangle(0, 0, w, h); + if ((mis + hit) > 0) { + int hitwidth = rect.width * hit * 1.0 / (mis + hit); + { + wxDCPenChanger ppen(dc2, *wxTRANSPARENT_PEN); + //wxColour c(wxString("#00FF00")); + wxColour c(*wxGREEN); + wxDCBrushChanger br(dc2, wxBrush(c)); + //dc2.SetBrush(*wxGREEN_BRUSH); + dc2.DrawRectangle(BMP_BORDER, y, hitwidth, rect.height); + dc2.SetPen(dc.GetPen()); + dc2.SetBrush(*wxTRANSPARENT_BRUSH); + dc2.DrawRectangle(rect); + } + y += rect.height + border; + } + else { + wxDCBrushChanger br(dc2, wxBrush(p.GetColour(), wxHATCHSTYLE_BDIAGONAL)); + rect.x = 0; rect.width = w; rect.height = h - y; + dc2.DrawRectangle(rect); + } + if (!mem.IsEmpty()) { + mem = "" + mem; + dc2.DrawText(mem, border, y); + y += th; + } + x = border; + if (evi > 0) { + wxDCBrushChanger br(dc2, wxBrush(*wxBLUE)); + int r = 4; + wxPoint p(x+r,y+r); + dc2.DrawCircle(p, r); + //y + 2 * r + 1; + x += 2 * r + r; + } + if (ovr > 0) { + wxDCBrushChanger br(dc2, wxBrush(*wxRED)); + int r = 4; + wxPoint p(x + r, y + r); + dc2.DrawCircle(p, r); + x += 2 * r + 3; + } + { + wxPen p = dc.GetPen(); + wxDCPenChanger ppen(dc2, wxPen(p.GetColour(), 2)); + //dc2.DrawLine(wxPoint(0, 0), wxPoint(w, h)); + //dc2.DrawLine(wxPoint(w, 0), wxPoint(0, h)); + } + dc2.SelectObject(wxNullBitmap); + bmpdynamic = true; + } int x, y; x = WXROUND(m_xpos - bmp.GetWidth() / 2.0); y = WXROUND(m_ypos - GetHeight() / 2.0); - dc.DrawBitmap(bmp, x, y, true); + if (bmpdynamic) dc.DrawBitmap(bmpm, x, y, true); else dc.DrawBitmap(bmp, x, y, true); int w, h; dc.SetFont(GetCanvas()->GetFont()); - dc.GetTextExtent(label, &w, &h); + dc.GetTextExtent(label.Trim(), &w, &h); x = WXROUND(m_xpos - w / 2.0); y += bmp.GetHeight() + BMP_BORDER; - dc.DrawText(label, x, y); + dc.DrawText(label.Trim(), x, y); } @@ -238,6 +352,8 @@ ExplainShape *ExplainShape::Create(long level, ExplainShape *last, const wxStrin else if (token == wxT("Result")) s = new ExplainShape(*ex_result_png_img, descr); else if (token == wxT("Append")) s = new ExplainShape(*ex_append_png_img, descr); else if (token == wxT("Gather")) s = new ExplainShape(*ex_gatcher_png_img, descr); + else if (token == wxT("Partial") && token2 == wxT("GroupAggregate")) s = new ExplainShape(*ex_partial_aggregate_png_img, descr); + else if (token == wxT("Finalize") && token2 == wxT("GroupAggregate")) s = new ExplainShape(*ex_finalize_aggregate_png_img, descr); else if (token == wxT("Nested")) { if (token2 == wxT("Loop") && token4 == wxT("Join")) diff --git a/include/ctl/explainCanvas.h b/include/ctl/explainCanvas.h index a89bda3..289bd47 100644 --- a/include/ctl/explainCanvas.h +++ b/include/ctl/explainCanvas.h @@ -44,9 +44,11 @@ public: void SetExplainString(const wxString &str); void Clear(); void SaveAsImage(const wxString &fileName, wxBitmapType imageType); - + bool isneedoptimizedraw=false; private: void OnMouseMotion(wxMouseEvent &ev); + void OnMouseWhell(wxMouseEvent& ev); + ExplainShape *rootShape; ExplainPopup *popup; @@ -66,6 +68,20 @@ public: if (condition.Length() == 0) condition = str; else condition += wxT(" ") + str; } + void SetConditionAndReplaceLabel(const wxString& str) + { + wxString replace= "Planning Time:"; + if (!str.StartsWith(replace)) { + replace = "Execution Time:"; + if (!str.StartsWith(replace)) { + condition += wxT(" ") + str; + return; + } + } + condition = label+ wxT(" ") + condition; + label = str; + description = str; + } long GetLevel() { return level; diff --git a/include/images/ex_finalize_aggregate.png b/include/images/ex_finalize_aggregate.png new file mode 100644 index 0000000..7f69a15 Binary files /dev/null and b/include/images/ex_finalize_aggregate.png differ diff --git a/include/images/ex_finalize_aggregate.pngc b/include/images/ex_finalize_aggregate.pngc new file mode 100644 index 0000000..c53dca3 --- /dev/null +++ b/include/images/ex_finalize_aggregate.pngc @@ -0,0 +1,215 @@ +#ifndef EX_FINALIZE_AGGREGATE_PNG_H +#define EX_FINALIZE_AGGREGATE_PNG_H + +static const unsigned char ex_finalize_aggregate_png_data[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x88, +0xb1, 0x00, 0x00, 0x05, 0x1b, 0x49, 0x44, 0x41, +0x54, 0x78, 0xda, 0xed, 0x99, 0xcb, 0x6f, 0x1b, +0x55, 0x14, 0xc6, 0xbf, 0xb1, 0x3d, 0x63, 0xbb, +0x71, 0x12, 0xdb, 0xb1, 0x53, 0x6c, 0x37, 0xa4, +0x94, 0xa6, 0x69, 0x5e, 0x4d, 0x20, 0x94, 0x90, +0xa8, 0x42, 0x14, 0x22, 0x51, 0x24, 0x54, 0xa9, +0x20, 0x24, 0x16, 0xac, 0x40, 0x6c, 0xd8, 0xb0, +0x61, 0xc5, 0x16, 0x89, 0x15, 0xf0, 0x0f, 0xf0, +0x58, 0x54, 0x02, 0x21, 0xa1, 0x4a, 0xa8, 0x12, +0xa2, 0x88, 0xa0, 0x76, 0x11, 0xa5, 0x24, 0x4d, +0xc0, 0x56, 0x43, 0xda, 0xbc, 0xdf, 0x69, 0x1e, +0x0e, 0x8e, 0xed, 0x3c, 0xfc, 0x9c, 0xe1, 0xdc, +0xb1, 0x1d, 0x86, 0xa8, 0x82, 0x99, 0x64, 0xc6, +0x58, 0xe0, 0x2b, 0x8d, 0x66, 0x72, 0x33, 0x77, +0xec, 0x9f, 0xcf, 0xe3, 0x9e, 0xef, 0x0c, 0x87, +0xff, 0xc8, 0xe0, 0xca, 0x20, 0x65, 0x90, 0x32, +0x48, 0x19, 0xe4, 0x2f, 0xe3, 0xc3, 0xeb, 0x21, +0x69, 0x64, 0xa3, 0x38, 0x5f, 0xaa, 0xd3, 0x0b, +0xbc, 0x7f, 0xb9, 0x9d, 0xd3, 0x1d, 0xe4, 0xfb, +0x81, 0xa0, 0xf4, 0xe5, 0x82, 0x15, 0xce, 0xd3, +0xb5, 0x98, 0x8c, 0x67, 0xe4, 0x39, 0x33, 0x3b, +0xb8, 0xdc, 0x61, 0xa1, 0x6b, 0x93, 0x89, 0xcb, +0xff, 0xcd, 0xed, 0xcf, 0xf3, 0x6c, 0x2e, 0x7f, +0x9f, 0x25, 0x3f, 0x67, 0xa6, 0x39, 0x0b, 0x24, +0xf9, 0x3e, 0x93, 0x29, 0xb7, 0xb6, 0xb0, 0x86, +0xdd, 0xe3, 0xe4, 0x4d, 0x98, 0x99, 0x8b, 0xe0, +0x94, 0x39, 0x8a, 0x37, 0x7b, 0x3b, 0x38, 0x5d, +0x41, 0x06, 0x47, 0x82, 0xd2, 0xc7, 0xa3, 0x66, +0x1c, 0x6f, 0xf2, 0xe1, 0x4e, 0x24, 0x83, 0xf9, +0x9d, 0x0c, 0xb6, 0x33, 0xa2, 0xfc, 0xc1, 0xb9, +0x83, 0x83, 0xdb, 0x6a, 0x42, 0x7d, 0x85, 0x05, +0x6e, 0xc1, 0xa4, 0x1e, 0x84, 0x8e, 0x54, 0x56, +0x44, 0x22, 0x2b, 0x21, 0x91, 0xc9, 0x82, 0x4e, +0xf4, 0x1c, 0x33, 0xbc, 0x62, 0x16, 0x91, 0xa5, +0x35, 0x7c, 0xf0, 0x4a, 0x3b, 0xa7, 0xbb, 0x6b, +0x7d, 0xf2, 0x5d, 0x48, 0x1a, 0xde, 0x34, 0x21, +0x99, 0x16, 0x61, 0x6e, 0xf4, 0x63, 0x60, 0x23, +0x89, 0x9d, 0x7d, 0x18, 0x0e, 0x8f, 0x39, 0x2c, +0xf0, 0x2d, 0xad, 0x6b, 0x76, 0xa3, 0x5a, 0xa7, +0x0d, 0x3e, 0xcf, 0x31, 0x58, 0xab, 0xed, 0x08, +0xd3, 0xb3, 0xd9, 0x78, 0x94, 0x93, 0x30, 0x3f, +0xbb, 0x8a, 0x8f, 0x5e, 0x33, 0x00, 0xe4, 0x60, +0xac, 0x08, 0x8d, 0x3e, 0xdc, 0x0e, 0xa7, 0xf2, +0x30, 0x39, 0x8b, 0x5c, 0xf0, 0x5a, 0x11, 0x1e, +0x5d, 0xd6, 0xe4, 0xe3, 0xd7, 0xfb, 0x83, 0xd2, +0x54, 0x94, 0x03, 0xfb, 0x91, 0x9e, 0x6a, 0x7d, +0x04, 0x31, 0x9a, 0xab, 0x22, 0xeb, 0xac, 0xcc, +0xaf, 0x19, 0x0b, 0xa2, 0x84, 0xb1, 0x9f, 0xf5, +0x63, 0x30, 0x9c, 0x24, 0x37, 0x93, 0x60, 0x21, +0x7f, 0x77, 0xf1, 0x1c, 0xc1, 0xd8, 0xb0, 0xa6, +0x11, 0x86, 0x8d, 0x2f, 0xfa, 0x82, 0x52, 0xdf, +0x8a, 0x19, 0xcf, 0x3c, 0x19, 0x00, 0x2f, 0x49, +0x18, 0x09, 0x2d, 0xe1, 0xb3, 0x37, 0x0c, 0x06, +0x51, 0xc2, 0x38, 0x9a, 0x72, 0x6e, 0x96, 0x10, +0x25, 0xd9, 0xcd, 0xdc, 0x14, 0xac, 0x3d, 0x64, +0x99, 0x95, 0xbb, 0xda, 0x61, 0x98, 0xfb, 0xc6, +0xed, 0x4e, 0x34, 0xd4, 0xbb, 0x70, 0xed, 0xd6, +0x2c, 0xae, 0xbd, 0x55, 0x04, 0x10, 0x25, 0x4c, +0x55, 0x73, 0x00, 0x43, 0x9b, 0x49, 0xec, 0x2a, +0xdc, 0xac, 0xdb, 0x23, 0x60, 0x31, 0xa4, 0x0d, +0xe6, 0xe6, 0x60, 0x50, 0xba, 0x3a, 0x2d, 0xe0, +0xe5, 0x9e, 0x3a, 0x7c, 0xf5, 0xd3, 0x4c, 0xf1, +0x40, 0x94, 0x30, 0xae, 0x16, 0x82, 0x09, 0x27, +0xb0, 0x97, 0x65, 0xd9, 0x8a, 0xd2, 0xa8, 0x60, +0x46, 0x77, 0x8d, 0x80, 0x39, 0x72, 0x11, 0x2d, +0x30, 0xaf, 0x7e, 0x1e, 0x92, 0xde, 0x7e, 0xf1, +0x71, 0x7c, 0xfa, 0xc3, 0x74, 0x71, 0x41, 0x94, +0x30, 0x9e, 0xd6, 0x00, 0x86, 0x29, 0x66, 0xf6, +0x0a, 0x6e, 0x46, 0xa9, 0xb8, 0xcb, 0x63, 0xc5, +0xd4, 0xaf, 0xea, 0x61, 0xde, 0xfb, 0x26, 0x24, +0x9d, 0x6d, 0xf0, 0xe3, 0xfe, 0xe4, 0x8a, 0xf1, +0xc1, 0xfe, 0x77, 0x30, 0xc7, 0x09, 0x66, 0x24, +0x92, 0xc2, 0x1e, 0xb9, 0x19, 0x4f, 0x6e, 0xe6, +0x22, 0x37, 0x3b, 0xef, 0x16, 0x30, 0xa1, 0x12, +0xe6, 0xeb, 0x5b, 0x41, 0xe9, 0xe6, 0x86, 0x0d, +0x17, 0xbd, 0x09, 0xbc, 0xfe, 0x5c, 0x47, 0xf1, +0x41, 0x94, 0x30, 0xfe, 0x36, 0x06, 0x93, 0x46, +0x92, 0xc1, 0x98, 0x72, 0xbb, 0xf5, 0x79, 0xb2, +0xcc, 0xd8, 0xc8, 0xa2, 0x2a, 0x18, 0x56, 0x49, +0xbc, 0xd4, 0xd3, 0xa1, 0x7f, 0x89, 0x72, 0x18, +0x98, 0xba, 0xf6, 0x00, 0x82, 0xbf, 0xa7, 0xe4, +0x5d, 0x9b, 0xb9, 0x99, 0x8b, 0x62, 0xa6, 0x93, +0x2c, 0x73, 0x57, 0x25, 0x4c, 0x49, 0x54, 0xbf, +0x05, 0x98, 0x93, 0xed, 0x27, 0x10, 0xda, 0x22, +0x18, 0x96, 0xcd, 0xa8, 0x34, 0xa9, 0xa1, 0x7d, +0xa6, 0xa3, 0xc6, 0x8a, 0xe0, 0x1d, 0xfd, 0x61, +0x34, 0x3f, 0xe8, 0xc2, 0x8d, 0x65, 0xa9, 0xff, +0x52, 0x80, 0x53, 0x0b, 0x73, 0xfa, 0x09, 0x82, +0x61, 0x96, 0xa1, 0x04, 0x20, 0xd0, 0xaa, 0x2a, +0x66, 0x19, 0x17, 0x8f, 0x61, 0x9d, 0x61, 0x0e, +0x05, 0xc2, 0xce, 0x5a, 0x60, 0xce, 0x10, 0xcc, +0xe8, 0x16, 0xc5, 0x4c, 0x56, 0x94, 0x2b, 0x00, +0x16, 0x33, 0xed, 0x2e, 0x2b, 0x86, 0x86, 0x16, +0x74, 0x83, 0xe1, 0x1e, 0xf6, 0x25, 0xd5, 0x0e, +0x2d, 0x30, 0xcd, 0x9d, 0x75, 0x18, 0x8b, 0xe4, +0x52, 0x33, 0x79, 0x18, 0xfc, 0x76, 0x0b, 0x7a, +0x7d, 0x76, 0xcd, 0x1b, 0x9f, 0x21, 0x20, 0x5a, +0x61, 0x6a, 0x5b, 0xfc, 0x24, 0x01, 0xd2, 0xa5, +0x67, 0x11, 0xb5, 0x30, 0x4a, 0x90, 0x8d, 0xa4, +0x68, 0x7c, 0x8c, 0x18, 0x61, 0x11, 0xa5, 0x6b, +0xcd, 0x6d, 0xa7, 0x71, 0xa6, 0x8a, 0x37, 0x3e, +0x6b, 0xe9, 0x1d, 0x23, 0xca, 0x60, 0x9f, 0xdb, +0xcd, 0xa2, 0x91, 0xc4, 0x57, 0xc9, 0xec, 0x23, +0x6a, 0xb3, 0x96, 0x32, 0xfd, 0x4e, 0x93, 0xce, +0x6f, 0xaa, 0xe6, 0x55, 0xef, 0xec, 0x25, 0xb3, +0x8f, 0x28, 0x37, 0xc4, 0x69, 0xd2, 0xf7, 0x4d, +0x95, 0x16, 0xd5, 0xb5, 0x56, 0xc9, 0xec, 0xec, +0xca, 0x12, 0x65, 0x3a, 0x96, 0x41, 0xb3, 0x93, +0xd7, 0x54, 0xfd, 0x96, 0x04, 0x88, 0xb2, 0x68, +0x9c, 0x8c, 0xa5, 0xd1, 0xe2, 0xd4, 0xae, 0x47, +0x0e, 0x0a, 0xad, 0x8b, 0x5d, 0xea, 0x8a, 0x47, +0x43, 0xca, 0xf8, 0x89, 0x78, 0x1a, 0xad, 0x64, +0x09, 0xad, 0x0a, 0xf1, 0xe0, 0xf3, 0x26, 0xb7, +0x79, 0x34, 0x38, 0xd2, 0xaa, 0xd6, 0xeb, 0x2e, +0xac, 0xc6, 0xa3, 0x29, 0xb4, 0x91, 0x25, 0x0e, +0xa3, 0xd9, 0x95, 0x65, 0xfc, 0xb7, 0xcb, 0x36, +0x5c, 0xe9, 0x3e, 0xa1, 0x5a, 0x29, 0xea, 0x2a, +0x75, 0xa7, 0x62, 0x29, 0x34, 0x56, 0x0b, 0x9a, +0x5b, 0x42, 0x0f, 0x6b, 0x42, 0xa4, 0xab, 0x3d, +0x70, 0x39, 0x78, 0x4c, 0x4c, 0x3e, 0x50, 0xa5, +0x14, 0x75, 0x6b, 0x3e, 0x8c, 0x53, 0x4c, 0xb4, +0x91, 0x3b, 0x1d, 0x15, 0xe2, 0x06, 0x59, 0xe3, +0xea, 0x94, 0x19, 0xbd, 0x5d, 0x75, 0xd8, 0x89, +0x27, 0xb1, 0xbe, 0xb0, 0xaa, 0xaa, 0xe3, 0xa8, +0x4b, 0x3b, 0xe8, 0x5e, 0x34, 0x83, 0x73, 0x54, +0x76, 0x44, 0x7e, 0x3b, 0x1a, 0x04, 0x6b, 0xcd, +0xf6, 0x2d, 0x71, 0xb0, 0xd4, 0x78, 0x60, 0x77, +0xda, 0x11, 0x59, 0x8f, 0xc3, 0x9b, 0x8a, 0xe0, +0x9d, 0x4b, 0x1d, 0xc6, 0x80, 0x28, 0x1b, 0x74, +0xf7, 0x48, 0x38, 0x9d, 0x73, 0x5b, 0x11, 0x1b, +0x3b, 0x1c, 0x04, 0xcb, 0x4c, 0x5b, 0x49, 0x60, +0x36, 0xce, 0x51, 0x75, 0x4c, 0x69, 0xdb, 0xef, +0x84, 0x50, 0xe3, 0x90, 0x55, 0x65, 0xf4, 0x41, +0x4c, 0x75, 0x33, 0xfb, 0xc8, 0x2d, 0x53, 0xa6, +0xfa, 0x4e, 0xae, 0x86, 0x0f, 0xed, 0x9e, 0x0e, +0x3b, 0x8f, 0xaa, 0x63, 0x16, 0x78, 0x5d, 0x76, +0x38, 0x2a, 0x6d, 0x72, 0xcb, 0x94, 0xb6, 0x1f, +0xf8, 0x6c, 0x26, 0x2c, 0xcc, 0x6c, 0xe2, 0x79, +0xf7, 0x2e, 0xae, 0x3c, 0xab, 0x33, 0x88, 0x12, +0xa2, 0x9f, 0x20, 0xb6, 0xd3, 0x22, 0x3c, 0x02, +0xeb, 0xc2, 0x9b, 0xe5, 0x2e, 0xba, 0xe6, 0xd7, +0x0a, 0x74, 0x88, 0x92, 0x84, 0x2c, 0x1d, 0xac, +0x2b, 0x9f, 0x22, 0x7d, 0x9f, 0x16, 0x73, 0xff, +0x6b, 0xa8, 0xe4, 0xf1, 0xf3, 0x2f, 0xcb, 0x78, +0xb7, 0x25, 0x8b, 0xae, 0x4e, 0x1d, 0x41, 0x0a, +0x10, 0x15, 0x14, 0xd8, 0xb7, 0xd7, 0x13, 0x08, +0xa7, 0x72, 0x9d, 0xf3, 0x42, 0x37, 0x9e, 0x29, +0xbf, 0xc2, 0x35, 0x9f, 0xbf, 0xe6, 0x15, 0xd7, +0x4c, 0xb3, 0x0b, 0xf2, 0x19, 0xb2, 0xb0, 0x3a, +0xb8, 0xc6, 0xa2, 0x80, 0x65, 0x3f, 0x40, 0x13, +0x65, 0xbf, 0x1f, 0x07, 0x16, 0x54, 0x8b, 0x2e, +0x4e, 0x2b, 0x44, 0x68, 0x75, 0x17, 0x4b, 0x59, +0x0e, 0xa9, 0x7c, 0x13, 0xce, 0x08, 0x90, 0x0a, +0x5a, 0xe4, 0x93, 0x44, 0x4d, 0x1d, 0x79, 0xd5, +0xea, 0x8e, 0xbd, 0x13, 0x19, 0xdf, 0xd8, 0xdb, +0x87, 0xf8, 0xd3, 0x1a, 0xfa, 0x83, 0x54, 0x0b, +0x66, 0xf8, 0x21, 0x6a, 0x7a, 0x47, 0xf2, 0x8f, +0x37, 0xb1, 0x5e, 0x6c, 0xdb, 0xd3, 0xf5, 0x18, +0x8b, 0xa6, 0xe5, 0x98, 0xc8, 0xe6, 0xe7, 0x8d, +0x7a, 0xf5, 0xc6, 0x06, 0x93, 0xc2, 0x8b, 0xcb, +0x51, 0xd5, 0xa9, 0x57, 0x93, 0x45, 0x8a, 0x3d, +0x58, 0x2a, 0x7f, 0x21, 0x20, 0xa9, 0x0a, 0x74, +0xc3, 0x1a, 0x74, 0xff, 0xc6, 0x28, 0x83, 0x94, +0x41, 0xca, 0x20, 0xff, 0x13, 0x90, 0x3f, 0x00, +0x9a, 0xf8, 0xdc, 0x51, 0x0b, 0xa8, 0x68, 0xd9, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, +}; + +#include "wx/mstream.h" + +static wxImage *ex_finalize_aggregate_png_img() +{ + if (!wxImage::FindHandler(wxT("PNG file"))) + wxImage::AddHandler(new wxPNGHandler()); + static wxImage *img_ex_finalize_aggregate_png = new wxImage(); + if (!img_ex_finalize_aggregate_png || !img_ex_finalize_aggregate_png->IsOk()) + { + wxMemoryInputStream img_ex_finalize_aggregate_pngIS(ex_finalize_aggregate_png_data, sizeof(ex_finalize_aggregate_png_data)); + img_ex_finalize_aggregate_png->LoadFile(img_ex_finalize_aggregate_pngIS, wxBITMAP_TYPE_PNG); + } + return img_ex_finalize_aggregate_png; +} +#define ex_finalize_aggregate_png_img ex_finalize_aggregate_png_img() + +static wxBitmap *ex_finalize_aggregate_png_bmp() +{ + static wxBitmap *bmp_ex_finalize_aggregate_png; + if (!bmp_ex_finalize_aggregate_png || !bmp_ex_finalize_aggregate_png->IsOk()) + bmp_ex_finalize_aggregate_png = new wxBitmap(*ex_finalize_aggregate_png_img); + return bmp_ex_finalize_aggregate_png; +} +#define ex_finalize_aggregate_png_bmp ex_finalize_aggregate_png_bmp() + +static wxIcon *ex_finalize_aggregate_png_ico() +{ + static wxIcon *ico_ex_finalize_aggregate_png; + if (!ico_ex_finalize_aggregate_png || !ico_ex_finalize_aggregate_png->IsOk()) + { + ico_ex_finalize_aggregate_png = new wxIcon(); + ico_ex_finalize_aggregate_png->CopyFromBitmap(*ex_finalize_aggregate_png_bmp); + } + return ico_ex_finalize_aggregate_png; +} +#define ex_finalize_aggregate_png_ico ex_finalize_aggregate_png_ico() + +#endif // EX_FINALIZE_AGGREGATE_PNG_H diff --git a/include/images/ex_partial_aggregate.png b/include/images/ex_partial_aggregate.png new file mode 100644 index 0000000..5132f9c Binary files /dev/null and b/include/images/ex_partial_aggregate.png differ diff --git a/include/images/ex_partial_aggregate.pngc b/include/images/ex_partial_aggregate.pngc new file mode 100644 index 0000000..7ff6dfe --- /dev/null +++ b/include/images/ex_partial_aggregate.pngc @@ -0,0 +1,218 @@ +#ifndef EX_PARTIAL_AGGREGATE_PNG_H +#define EX_PARTIAL_AGGREGATE_PNG_H + +static const unsigned char ex_partial_aggregate_png_data[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x88, +0xb1, 0x00, 0x00, 0x05, 0x32, 0x49, 0x44, 0x41, +0x54, 0x78, 0xda, 0xed, 0x99, 0xcb, 0x6f, 0x1b, +0x55, 0x14, 0xc6, 0xbf, 0xb1, 0x3d, 0x63, 0xbb, +0x71, 0x12, 0xdb, 0xb1, 0x53, 0xec, 0x34, 0xa4, +0x40, 0xd3, 0xd4, 0x79, 0x34, 0x81, 0x50, 0x42, +0x22, 0x84, 0x28, 0x44, 0x02, 0x04, 0x42, 0x0a, +0x08, 0x89, 0x05, 0x2b, 0x10, 0x1b, 0x36, 0x6c, +0x58, 0xb1, 0x45, 0x62, 0x05, 0xfc, 0x03, 0x3c, +0x16, 0x95, 0x40, 0x48, 0xa8, 0x02, 0x55, 0xaa, +0x00, 0x11, 0xd4, 0x2e, 0xaa, 0x94, 0xa4, 0x09, +0xd8, 0x6a, 0x49, 0xc8, 0xfb, 0x9d, 0xe6, 0xe1, +0xe0, 0xd8, 0xce, 0xc3, 0xef, 0xe1, 0xdc, 0xb1, +0x9d, 0x8e, 0xac, 0xb4, 0xf1, 0x8c, 0xc7, 0xa6, +0xa1, 0xbe, 0xd2, 0xd5, 0x4c, 0x6e, 0x66, 0xc6, +0xfe, 0xf9, 0x3c, 0xee, 0xf9, 0xce, 0x70, 0xf8, +0x9f, 0x0c, 0xae, 0x0c, 0x52, 0x06, 0x29, 0x83, +0x3c, 0xe0, 0x20, 0x9f, 0x5c, 0xf2, 0x89, 0x23, +0x1b, 0xa5, 0xf9, 0x12, 0x9d, 0x4e, 0xe0, 0xa3, +0xd7, 0xda, 0x39, 0xcd, 0x41, 0x7e, 0x1a, 0xf0, +0x8a, 0xdf, 0x2c, 0x18, 0x61, 0x3d, 0x55, 0x8b, +0xc9, 0x70, 0x42, 0x5a, 0xd3, 0xb3, 0xc9, 0xa5, +0xa7, 0x81, 0xce, 0x75, 0x3a, 0x2e, 0xf3, 0x37, +0xb7, 0xbf, 0xce, 0xb3, 0xb5, 0xcc, 0x75, 0x86, +0xcc, 0x9a, 0x9e, 0xd6, 0x0c, 0x10, 0xa5, 0xeb, +0x74, 0xba, 0xf4, 0xbd, 0xd9, 0x7b, 0xd8, 0x35, +0x56, 0x5e, 0x87, 0x99, 0xb9, 0x00, 0x1e, 0xd5, +0x07, 0xf1, 0x4e, 0x6f, 0x07, 0xa7, 0x29, 0xc8, +0xe0, 0x88, 0x57, 0xfc, 0xec, 0x96, 0x1e, 0xc7, +0x3d, 0x2e, 0xdc, 0x08, 0x24, 0x30, 0xbf, 0x93, +0xc0, 0x76, 0x22, 0x25, 0x7d, 0x70, 0x7a, 0x72, +0xb0, 0x1b, 0x75, 0x68, 0xa8, 0x30, 0xc0, 0x2e, +0xe8, 0xf2, 0x07, 0xa1, 0x19, 0x4b, 0xa6, 0x10, +0x49, 0x8a, 0x88, 0x24, 0x92, 0xa0, 0x03, 0x3d, +0x47, 0x0f, 0x67, 0x2a, 0x89, 0xc0, 0xd2, 0x1a, +0x3e, 0x7e, 0xbd, 0x9d, 0xd3, 0xdc, 0xb5, 0x3e, +0xbf, 0xec, 0x13, 0x87, 0x37, 0x75, 0x88, 0xc6, +0x53, 0xd0, 0x37, 0xb9, 0x31, 0xb0, 0x11, 0xc5, +0xce, 0x3e, 0x0c, 0x87, 0x47, 0x2c, 0x06, 0xb8, +0x96, 0xd6, 0x15, 0x7f, 0x60, 0xad, 0xd5, 0x04, +0x97, 0xe3, 0x18, 0x8c, 0xd5, 0x66, 0xf8, 0xe9, +0xd9, 0x6c, 0x3c, 0xcc, 0x89, 0x98, 0x9f, 0x5d, +0xc5, 0xa7, 0x6f, 0x16, 0x01, 0x24, 0x37, 0x56, +0x84, 0x26, 0x17, 0xae, 0xfb, 0x63, 0x19, 0x98, +0xb4, 0x45, 0x9e, 0x71, 0x1a, 0xe1, 0xbf, 0xb5, +0xac, 0xc8, 0xc7, 0x2f, 0x5d, 0xf3, 0x8a, 0x53, +0x41, 0x0e, 0xec, 0x47, 0x7a, 0xb2, 0xf5, 0x21, +0x84, 0x68, 0xad, 0x8a, 0xac, 0xb3, 0x32, 0xbf, +0x56, 0x5c, 0x10, 0x39, 0x8c, 0xf9, 0x8c, 0x1b, +0x83, 0xfe, 0x28, 0xb9, 0x99, 0x08, 0x03, 0xf9, +0xbb, 0x8d, 0xe7, 0x08, 0xc6, 0x84, 0x35, 0x85, +0x30, 0x6c, 0x7c, 0xdd, 0xef, 0x15, 0xfb, 0x57, +0xf4, 0x78, 0xfa, 0x89, 0x3a, 0xf0, 0xa2, 0x88, +0x11, 0xdf, 0x12, 0xbe, 0x7c, 0xbb, 0xc8, 0x20, +0x72, 0x18, 0x8b, 0x27, 0xed, 0x66, 0x91, 0x94, +0x28, 0xb9, 0x99, 0x9d, 0x82, 0xb5, 0x87, 0x2c, +0xb3, 0x72, 0x53, 0x39, 0x0c, 0x73, 0xdf, 0xb0, +0xd9, 0x8a, 0xc6, 0x06, 0x1b, 0x2e, 0x5e, 0x9d, +0xc5, 0xc5, 0x77, 0x4b, 0x00, 0x22, 0x87, 0xa9, +0x6a, 0xae, 0xc3, 0xd0, 0x66, 0x14, 0xbb, 0x32, +0x37, 0xeb, 0x76, 0x08, 0x58, 0xf4, 0x29, 0x83, +0xb9, 0x32, 0xe8, 0x15, 0x2f, 0x4c, 0x0b, 0x78, +0xb5, 0xa7, 0x1e, 0xdf, 0xfe, 0x36, 0x53, 0x3a, +0x10, 0x39, 0x8c, 0xad, 0x85, 0x60, 0xfc, 0x11, +0xec, 0x25, 0x59, 0xb6, 0xa2, 0x34, 0x2a, 0xe8, +0xd1, 0x5d, 0x23, 0x60, 0x8e, 0x5c, 0x44, 0x09, +0xcc, 0x1b, 0x5f, 0xf9, 0xc4, 0xf7, 0x5e, 0x7c, +0x0c, 0x5f, 0xfc, 0x32, 0x9d, 0x17, 0xc8, 0x2b, +0x3f, 0x8c, 0x89, 0x97, 0xfb, 0x3c, 0x9c, 0x26, +0x3b, 0x7b, 0x16, 0xc6, 0xd1, 0x5a, 0x87, 0x61, +0x8a, 0x99, 0xbd, 0xac, 0x9b, 0x51, 0x2a, 0xee, +0x72, 0x18, 0x31, 0xf5, 0x67, 0xfe, 0x30, 0x1f, +0x7e, 0xef, 0x13, 0xcf, 0x34, 0xba, 0xf1, 0xf7, +0xe4, 0x4a, 0x5e, 0xc1, 0xce, 0x40, 0xd8, 0x31, +0x17, 0x46, 0xb5, 0x29, 0xb3, 0x30, 0xc7, 0x09, +0x66, 0x24, 0x10, 0xc3, 0x1e, 0xb9, 0x19, 0x4f, +0x6e, 0x66, 0x23, 0x37, 0x3b, 0x67, 0x17, 0x30, +0x91, 0x27, 0xcc, 0x77, 0x57, 0xbd, 0xe2, 0x95, +0x0d, 0x13, 0xce, 0x3b, 0x23, 0x78, 0xeb, 0xb9, +0xf4, 0x86, 0x98, 0xfd, 0xb2, 0x87, 0x0d, 0x39, +0x4c, 0x41, 0x65, 0x41, 0x16, 0xc6, 0xdd, 0xc6, +0x60, 0xe2, 0x88, 0x32, 0x18, 0x5d, 0x7a, 0xb7, +0x3e, 0x47, 0x96, 0x19, 0x1d, 0x59, 0xcc, 0x0b, +0x86, 0x55, 0x12, 0x2f, 0xf7, 0xdc, 0xd9, 0xd5, +0xf3, 0x05, 0x91, 0xc3, 0x14, 0x5c, 0x34, 0x66, +0x61, 0xea, 0xdb, 0xeb, 0xe0, 0xfd, 0x27, 0x26, +0xed, 0xda, 0xcc, 0xcd, 0x6c, 0x14, 0x33, 0x9d, +0x64, 0x99, 0x9b, 0x79, 0xc2, 0x1c, 0xe4, 0x3e, +0x25, 0xb3, 0x48, 0x2e, 0xcc, 0xc9, 0xf6, 0x13, +0xf0, 0x6d, 0x11, 0x0c, 0xcb, 0x66, 0x54, 0x9a, +0xd4, 0xd0, 0x3e, 0xd3, 0x51, 0x63, 0x84, 0xf7, +0xc6, 0xa2, 0x26, 0x85, 0x61, 0x51, 0x62, 0xe4, +0x6e, 0x30, 0xa7, 0x1e, 0x27, 0x18, 0x66, 0x19, +0x4a, 0x00, 0x02, 0x3d, 0xbd, 0x8a, 0x59, 0xc6, +0xc6, 0x63, 0x58, 0x23, 0x18, 0x4d, 0xb3, 0xd6, +0x61, 0x30, 0xa7, 0x09, 0xe6, 0xd6, 0x16, 0xc5, +0x4c, 0x32, 0x25, 0x55, 0x00, 0x2c, 0x66, 0xda, +0x6d, 0x46, 0x0c, 0x0d, 0x2d, 0x68, 0x66, 0x99, +0xa2, 0x0b, 0xab, 0x2c, 0x4c, 0x73, 0x67, 0x3d, +0x46, 0x03, 0xe9, 0xd4, 0x4c, 0x1e, 0x06, 0xb7, +0xd9, 0x80, 0x5e, 0x97, 0xb9, 0xe0, 0x8d, 0xaf, +0xa4, 0x0a, 0x31, 0x0b, 0x53, 0xdb, 0xe2, 0x26, +0x09, 0x10, 0x3f, 0x9a, 0x16, 0xc9, 0x05, 0xd9, +0x88, 0xa6, 0x8e, 0x5e, 0x8c, 0xe4, 0xba, 0xd6, +0xdc, 0x76, 0x1c, 0xa7, 0xab, 0xf8, 0xa3, 0x95, +0xb5, 0x72, 0x83, 0x7d, 0x6e, 0x37, 0x89, 0x26, +0x12, 0x5f, 0x47, 0x6a, 0x1f, 0xc9, 0x4d, 0xbf, +0xd3, 0xa4, 0xf3, 0x3d, 0xd5, 0x7c, 0xde, 0x3b, +0xbb, 0x5a, 0x10, 0x4d, 0x77, 0xf6, 0xdc, 0x0d, +0x71, 0x9a, 0xf4, 0xbd, 0xa7, 0xd2, 0x90, 0x77, +0xad, 0x75, 0xdf, 0x58, 0x44, 0x5e, 0xa2, 0x4c, +0x87, 0x12, 0x68, 0xb6, 0xf2, 0x8a, 0xaa, 0xdf, +0xfb, 0x22, 0x46, 0xe4, 0x45, 0xe3, 0x64, 0x28, +0x8e, 0x16, 0xab, 0x72, 0x3d, 0x92, 0x2b, 0xb4, +0xce, 0x77, 0xdd, 0xbb, 0x25, 0xa4, 0x79, 0xd6, +0x92, 0x97, 0xf1, 0x13, 0xe1, 0x38, 0x5a, 0xc9, +0x12, 0x4a, 0x15, 0x62, 0xee, 0xf3, 0x26, 0xb7, +0x79, 0x34, 0x5a, 0xe2, 0xaa, 0xee, 0x2f, 0x58, +0x58, 0x8d, 0x07, 0x63, 0x68, 0x23, 0x4b, 0xa8, +0xd1, 0xec, 0xf2, 0x32, 0xfe, 0xc7, 0x65, 0x13, +0xfa, 0xba, 0x4f, 0xe4, 0xad, 0x14, 0x35, 0x95, +0xba, 0x53, 0xa1, 0x18, 0x9a, 0xaa, 0x05, 0xc5, +0x2d, 0xa1, 0x83, 0x9a, 0x10, 0xf1, 0x6a, 0x07, +0x6c, 0x16, 0x1e, 0x13, 0x93, 0xb7, 0x55, 0xb5, +0x85, 0x54, 0x37, 0x1f, 0xc6, 0x29, 0x26, 0xda, +0xc8, 0x9d, 0x0a, 0x85, 0xf8, 0x99, 0xac, 0x71, +0x61, 0x4a, 0x8f, 0xde, 0xae, 0x7a, 0xec, 0x84, +0xa3, 0x58, 0x5f, 0x58, 0x55, 0xd5, 0x71, 0x54, +0xd5, 0x0e, 0x1a, 0x0b, 0x26, 0x70, 0x96, 0xca, +0x8e, 0xc0, 0x5f, 0x85, 0x41, 0xb0, 0xd6, 0x6c, +0xff, 0x12, 0x07, 0x43, 0x8d, 0x03, 0x66, 0xab, +0x19, 0x81, 0xf5, 0x30, 0x9c, 0xb1, 0x00, 0xde, +0x7f, 0xa9, 0xa3, 0x38, 0x20, 0xf2, 0x06, 0xdd, +0x18, 0x09, 0xa7, 0xb3, 0x76, 0x23, 0x42, 0xa3, +0xea, 0x20, 0x58, 0x66, 0xda, 0x8a, 0x02, 0xb3, +0x61, 0x8e, 0xaa, 0x63, 0x4a, 0xdb, 0x6e, 0x2b, +0x84, 0x1a, 0x8b, 0xa4, 0x2a, 0x83, 0xb7, 0x43, +0xaa, 0x9b, 0xd9, 0x8a, 0x5b, 0xa6, 0x4c, 0xf5, +0x9d, 0x5c, 0xf5, 0xab, 0x4e, 0xd9, 0x16, 0x33, +0x8f, 0xaa, 0x63, 0x06, 0x38, 0x6d, 0x66, 0x58, +0x2a, 0x4d, 0x52, 0xcb, 0x94, 0xb6, 0x1f, 0xb8, +0x4c, 0x3a, 0x2c, 0xcc, 0x6c, 0xe2, 0x79, 0xfb, +0x2e, 0xfa, 0x9e, 0xd5, 0x18, 0x44, 0x0e, 0x71, +0x8d, 0x20, 0xb6, 0xe3, 0x29, 0x38, 0x04, 0xd6, +0x85, 0xd7, 0x4b, 0x5d, 0x74, 0xc5, 0xaf, 0x15, +0x68, 0xa6, 0x44, 0x11, 0x49, 0x9a, 0xac, 0x2b, +0x1f, 0x23, 0x7d, 0x1f, 0x4f, 0xa5, 0xff, 0xd7, +0x58, 0xc9, 0xe3, 0xf7, 0x3f, 0x96, 0xf1, 0x41, +0x4b, 0x12, 0x5d, 0x9d, 0x1a, 0x82, 0x64, 0x21, +0x2a, 0x28, 0xb0, 0xaf, 0xaf, 0x47, 0xe0, 0x8f, +0xa5, 0x3b, 0xe7, 0xd9, 0x6e, 0x3c, 0x53, 0x7e, +0xd9, 0x73, 0x3e, 0x73, 0xce, 0xcb, 0xce, 0x99, +0x66, 0x17, 0xa4, 0x23, 0x24, 0x61, 0x95, 0x7b, +0x8f, 0x41, 0x06, 0xcb, 0x7e, 0x00, 0x0f, 0x65, +0xbf, 0x5f, 0x07, 0x16, 0x54, 0x8b, 0x2e, 0xee, +0x30, 0x08, 0xdf, 0xea, 0x2e, 0x96, 0x92, 0x1c, +0x62, 0x99, 0x26, 0x5c, 0x31, 0x40, 0x2a, 0xe8, +0x26, 0x97, 0x98, 0x2a, 0xa8, 0x23, 0xcf, 0xdd, +0x0d, 0x82, 0xbd, 0x13, 0x19, 0xdf, 0xd8, 0xdb, +0x87, 0xb8, 0x63, 0x0d, 0xed, 0x41, 0xaa, 0x05, +0x3d, 0xdc, 0x48, 0x15, 0xf4, 0x8e, 0x84, 0x3b, +0xa8, 0x17, 0xdb, 0xf6, 0x54, 0x03, 0x46, 0x83, +0x71, 0x29, 0x26, 0x92, 0x99, 0xf5, 0x62, 0xbd, +0x7a, 0x63, 0x83, 0x49, 0xe1, 0xc5, 0xe5, 0xa0, +0xea, 0xd4, 0x7b, 0x4f, 0x8b, 0x94, 0x7a, 0xb0, +0x54, 0xfe, 0x42, 0x9d, 0xa8, 0x2a, 0xd0, 0x8b, +0xa6, 0xd9, 0xff, 0x8b, 0x51, 0x06, 0x29, 0x83, +0x94, 0x41, 0x1e, 0x10, 0x90, 0x7f, 0x01, 0x32, +0xfc, 0xf0, 0x51, 0x4e, 0xbb, 0x19, 0x57, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, +}; + +#include "wx/mstream.h" + +static wxImage *ex_partial_aggregate_png_img() +{ + if (!wxImage::FindHandler(wxT("PNG file"))) + wxImage::AddHandler(new wxPNGHandler()); + static wxImage *img_ex_partial_aggregate_png = new wxImage(); + if (!img_ex_partial_aggregate_png || !img_ex_partial_aggregate_png->IsOk()) + { + wxMemoryInputStream img_ex_partial_aggregate_pngIS(ex_partial_aggregate_png_data, sizeof(ex_partial_aggregate_png_data)); + img_ex_partial_aggregate_png->LoadFile(img_ex_partial_aggregate_pngIS, wxBITMAP_TYPE_PNG); + } + return img_ex_partial_aggregate_png; +} +#define ex_partial_aggregate_png_img ex_partial_aggregate_png_img() + +static wxBitmap *ex_partial_aggregate_png_bmp() +{ + static wxBitmap *bmp_ex_partial_aggregate_png; + if (!bmp_ex_partial_aggregate_png || !bmp_ex_partial_aggregate_png->IsOk()) + bmp_ex_partial_aggregate_png = new wxBitmap(*ex_partial_aggregate_png_img); + return bmp_ex_partial_aggregate_png; +} +#define ex_partial_aggregate_png_bmp ex_partial_aggregate_png_bmp() + +static wxIcon *ex_partial_aggregate_png_ico() +{ + static wxIcon *ico_ex_partial_aggregate_png; + if (!ico_ex_partial_aggregate_png || !ico_ex_partial_aggregate_png->IsOk()) + { + ico_ex_partial_aggregate_png = new wxIcon(); + ico_ex_partial_aggregate_png->CopyFromBitmap(*ex_partial_aggregate_png_bmp); + } + return ico_ex_partial_aggregate_png; +} +#define ex_partial_aggregate_png_ico ex_partial_aggregate_png_ico() + +#endif // EX_PARTIAL_AGGREGATE_PNG_H diff --git a/pgAdmin3.vcxproj b/pgAdmin3.vcxproj index 13f08ef..1a096e4 100644 --- a/pgAdmin3.vcxproj +++ b/pgAdmin3.vcxproj @@ -2159,6 +2159,7 @@ + @@ -2186,6 +2187,7 @@ + diff --git a/pgAdmin3.vcxproj.filters b/pgAdmin3.vcxproj.filters index d1ed2eb..031a748 100644 --- a/pgAdmin3.vcxproj.filters +++ b/pgAdmin3.vcxproj.filters @@ -3961,6 +3961,9 @@ include\images + + include\images + include\images @@ -4036,6 +4039,9 @@ include\images + + include\images + include\images