MapGridCtrl::MapGridCtrl(wxWindow* parent, wxSize size, wxWindowID id) : wxPanel(parent, id, wxDefaultPosition, size, wxSIMPLE_BORDER | wxFULL_REPAINT_ON_RESIZE) , m_async_image(std::bind(&MapGridCtrl::OnGetMapImageAsyncCompleted, this, std::placeholders::_1)) , m_async_ex(std::bind(&MapGridCtrl::OnGetMapExAsyncCompleted, this, std::placeholders::_1)) , m_async_ops_count(0) , m_selection_follows_mouse(sett().GetMapSelectorFollowsMouse()) , m_size(0, 0) , m_pos(0, 0) , m_in_mouse_drag(false) , m_mouseover_map(NULL) , m_selected_map(NULL) { SetBackgroundStyle(wxBG_STYLE_CUSTOM); SetBackgroundColour(*wxLIGHT_GREY); m_img_background.Create(MINIMAP_SIZE, MINIMAP_SIZE, false /*don't clear*/); wxRect rect(0, 0, MINIMAP_SIZE, MINIMAP_SIZE); wxColour color(GetBackgroundColour()); m_img_background.SetRGB(rect, color.Red(), color.Green(), color.Blue()); m_img_minimap_alpha = charArr2wxImage(map_select_1_png, sizeof(map_select_1_png)); m_img_foreground = charArr2wxImage(map_select_2_png, sizeof(map_select_2_png)); ASSERT_EXCEPTION(m_img_minimap_alpha.HasAlpha(), _T("map_select_1_png must have an alpha channel")); ASSERT_EXCEPTION(m_img_foreground.HasAlpha(), _T("map_select_2_png must have an alpha channel")); m_img_minimap_loading = wxBitmap(BlendImage(m_img_foreground, m_img_background, false)); }
wxBitmap charArr2wxBitmapWithBlending(const unsigned char* dest, int dest_size, const unsigned char* text, int text_size) { wxImage dest_img(charArr2wxImage(dest, dest_size)); wxImage text_img(charArr2wxImage(text, text_size)); wxImage ret = BlendImage(text_img, dest_img); return wxBitmap(ret); }
wxBitmap charArr2wxBitmap(const unsigned char* arg, int size) { return wxBitmap(charArr2wxImage(arg, size)); }