bool ff::ProcessGlobals::Startup() { HookCrtMemAlloc(); #if !METRO_APP assertHrRetVal(::OleInitialize(nullptr), false); INITCOMMONCONTROLSEX cc; cc.dwSize = sizeof(cc); cc.dwICC = ICC_WIN95_CLASSES; verify(::InitCommonControlsEx(&cc)); #endif // Init random numbers SYSTEMTIME time; GetSystemTime(&time); std::srand((DWORD)(HashFunc(time) & 0xFFFFFFFF)); assertRetVal(ff::ThreadGlobals::Startup(), false); assertRetVal(CreateAudioFactory(&_audioFactory), false); assertRetVal(CreateGraphicFactory(&_graphicFactory), false); assertRetVal(CreateServiceCollection(&_services), false); assertRetVal(CreateThreadPool(&_threadPool), false); GetThisModule(); ProcessStartup::OnStartup(*this); return true; }
void CMatrixStatic::OnPaint(HWND hWnd) { COLORREF SEGM_COLORS[3] = { RGB(63, 181, 255), // BLUE ON RGB(23, 64, 103), // BLUE OFF RGB(0, 0, 0), // BLACK }; RECT rc; CRect m_rect; GetClientRect(&m_rect); int x = 0, y = 0; int strlen = m_csStrText.GetLength(); if (strlen == 0) return; CPaintDC dc(this); // device context for painting HBITMAP bmp; COLORMAP ColorMap[4];; ColorMap[0].from = SEGM_COLORS[0]; ColorMap[0].to = m_crOnColor; ColorMap[1].from = SEGM_COLORS[1]; ColorMap[1].to = m_crOffColor; ColorMap[2].from = SEGM_COLORS[2]; ColorMap[2].to = m_crBackColor; //bmp = ::CreateMappedBitmap(AfxGetInstanceHandle(), m_iImagematrix, 0, ColorMap, 3); //@@code modify --> bmp = ::CreateMappedBitmap(GetThisModule(), m_iImagematrix, 0, ColorMap, 3); CDC dcMemory; dcMemory.CreateCompatibleDC(&dc); // Select the bitmap into the in-memory DC //CBitmap* pOldBitmap = dcMemory.SelectObject(CBitmap::FromHandle(bmp)); //@@code modify --> HBITMAP pOldBitmap = dcMemory.SelectObject(bmp); int charcount = 0; int linecount = 1; HBRUSH hbBkBrush = CreateSolidBrush(m_crBackColor); FillRect(dc.m_hDC, &m_rect, hbBkBrush); for (int ix = 0; ix < strlen; ix++) { GetCharBmpOffset(&rc, (char)m_csStrText[ix]); dc.BitBlt(x, y, (m_icharwidth + m_ixspacing), (m_icharheight+m_iyspacing), &dcMemory, rc.left, rc.top, SRCCOPY); x += m_icharwidth + m_ixspacing; charcount++; if ((charcount == m_iMaxXChars) && m_iMaxYChars == 1) break; else if ((charcount == m_iMaxXChars) && m_iMaxYChars > 1) { if (linecount == m_iMaxYChars) break; x = charcount = 0; y += m_icharheight + m_iyspacing; linecount++; } } dcMemory.SelectObject(pOldBitmap); dcMemory.DeleteDC(); DeleteObject(bmp); DeleteObject(hbBkBrush); }
void ff::DumpDict(ff::StringRef name, const Dict &dict, Log *log, bool chain, bool debugOnly) { if (debugOnly && !GetThisModule().IsDebugBuild()) { return; } Log extraLog; Log &realLog = log ? *log : extraLog; realLog.TraceF(L"+- Options for: %s --\r\n", name.c_str()); Vector<String> names = dict.GetAllNames(chain, true, false); for (const String &key: names) { Value *value = dict.GetValue(key, chain); assert(value); String valueString; ValuePtr convertedValue; if (value->Convert(ff::Value::Type::String, &convertedValue)) { valueString = convertedValue->AsString(); } else if (value->Convert(ff::Value::Type::StringVector, &convertedValue)) { Vector<String> &strs = convertedValue->AsStringVector(); for (size_t i = 0; i < strs.Size(); i++) { valueString += String::format_new(L"\r\n| [%lu]: %s", i, strs[i].c_str()); } } else if (value->Convert(ff::Value::Type::Data, &convertedValue)) { valueString.format(L"<data[%lu]>", convertedValue->AsData()->GetSize()); } else { valueString = L"<data>"; } realLog.TraceF(L"| %s: %s\r\n", key.c_str(), valueString.c_str()); } realLog.Trace(L"+- Done --\r\n"); }