mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
Graph query explain optimization
Добавлено два узла Partial GroupAggregate, Finalize GroupAggregate. Добавлено наглядное представление Memoize. Добавлена поддержка колеса мыши. Если в план более 300 узлов, то включается оптимизация отрисовки и возможно появление артефактов при прокрутке экрана.
This commit is contained in:
parent
0e0aae430a
commit
6958c9684f
9 changed files with 600 additions and 6 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@
|
|||
#include <wx/docview.h>
|
||||
|
||||
#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<ExplainCanvas *>(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"))
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
BIN
include/images/ex_finalize_aggregate.png
Normal file
BIN
include/images/ex_finalize_aggregate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
215
include/images/ex_finalize_aggregate.pngc
Normal file
215
include/images/ex_finalize_aggregate.pngc
Normal file
|
|
@ -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
|
||||
BIN
include/images/ex_partial_aggregate.png
Normal file
BIN
include/images/ex_partial_aggregate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
218
include/images/ex_partial_aggregate.pngc
Normal file
218
include/images/ex_partial_aggregate.pngc
Normal file
|
|
@ -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
|
||||
|
|
@ -2159,6 +2159,7 @@
|
|||
<png2c Include="include\images\ex_broadcast_motion.png" />
|
||||
<png2c Include="include\images\ex_cte_scan.png" />
|
||||
<png2c Include="include\images\ex_delete.png" />
|
||||
<png2c Include="include\images\ex_finalize_aggregate.png" />
|
||||
<png2c Include="include\images\ex_foreign_scan.png" />
|
||||
<png2c Include="include\images\ex_gatcher.png" />
|
||||
<png2c Include="include\images\ex_gather.png" />
|
||||
|
|
@ -2186,6 +2187,7 @@
|
|||
<png2c Include="include\images\ex_nested.png" />
|
||||
<png2c Include="include\images\ex_nested_loop_anti_join.png" />
|
||||
<png2c Include="include\images\ex_nested_loop_semi_join.png" />
|
||||
<png2c Include="include\images\ex_partial_aggregate.png" />
|
||||
<png2c Include="include\images\ex_recursive_union.png" />
|
||||
<png2c Include="include\images\ex_redistribute_motion.png" />
|
||||
<png2c Include="include\images\ex_result.png" />
|
||||
|
|
|
|||
|
|
@ -3961,6 +3961,9 @@
|
|||
<png2c Include="include\images\ex_delete.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
<png2c Include="include\images\ex_finalize_aggregate.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
<png2c Include="include\images\ex_foreign_scan.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
|
|
@ -4036,6 +4039,9 @@
|
|||
<png2c Include="include\images\ex_nested_loop_semi_join.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
<png2c Include="include\images\ex_partial_aggregate.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
<png2c Include="include\images\ex_recursive_union.png">
|
||||
<Filter>include\images</Filter>
|
||||
</png2c>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue