15#define WIDTHBYTES(i) (((i) + 31) / 32 * 4)
28 return dpi / (0.0254f * 100.0f);
93 if (
cx == 0 ||
cy == 0)
107 ::StretchBlt(
hdc2, 0, 0,
cx,
cy,
hdc1, 0, 0, bm.bmWidth, bm.bmHeight,
SRCCOPY);
117 if (minimalWidth <= 0)
119 if (minimalHeight <= 0)
126 if (
hbm && minimalWidth <= bm.bmWidth && minimalHeight <= bm.bmHeight)
271 if (
find.nFileSizeLow == 0 &&
find.nFileSizeHigh == 0)
279 float xDpi = 0, yDpi = 0;
297 if (xDpi <= 0 || yDpi <= 0)
358 const double eTan =
tan(
abs(nDegree) *
M_PI / 180);
362 INT cx = bm.bmWidth,
cy = bm.bmHeight,
dx = 0,
dy = 0;
368 if (
dx == 0 &&
dy == 0)
389 ::BitBlt(hDC2,
x, delta, 1,
cy, hDC1,
x, 0,
SRCCOPY);
400 ::BitBlt(hDC2, delta,
y,
cx, 1, hDC1, 0,
y,
SRCCOPY);
411 CRect rc = rcPartial;
430 CRect rc = rcPartial;
466 if (bm.bmBitsPixel < 16)
467 cColors = 1 << bm.bmBitsPixel;
521 INT cColors = 0, cbColors = 0;
528 cColors = (1 << BitCount);
538 cColors = (1 << BitCount);
539 cbColors = cColors *
sizeof(
RGBQUAD);
588 if (bm.bmBitsPixel == 1)
600 DWORD cbBits = widthbytes * bm.bmHeight;
608 for (
LONG y = 0;
y < bm.bmHeight; ++
y)
610 LPBYTE pbLine = &pbBits[widthbytes *
y];
611 for (
LONG x = 0;
x < bm.bmWidth; ++
x)
617 if (rgbColor !=
RGB(0, 0, 0) && rgbColor !=
RGB(255, 255, 255))
619 bBlackAndWhite =
FALSE;
628 return bBlackAndWhite;
_STLP_DECLSPEC complex< float > _STLP_CALL tan(const complex< float > &)
#define ATLTRACE(format,...)
VOID ShowError(DWORD dwLastError)
static HBITMAP CopyDIBImage(HBITMAP hbm, INT cx=0, INT cy=0)
WCHAR g_szFileName[MAX_LONG_PATH]
void ShowOutOfMemory(void)
RegistrySettings registrySettings
#define IDS_DEFAULTFILENAME
#define IDS_LOADERRORTEXT
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
CCanvasWindow canvasWindow
void __cdecl Format(UINT nFormatID,...)
BOOL SetWindowText(LPCTSTR lpszString)
VOID updateScrollPos(INT x=0, INT y=0)
int Width() const noexcept
int Height() const noexcept
void SetMostRecentFile(LPCWSTR szPathName)
void putSubImage(HBITMAP hbmWhole, const RECT &rcPartial, HBITMAP hbmPart)
HBITMAP CreateDIBWithProperties(int width, int height)
void SetFileInfo(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isAFile)
HBITMAP InitializeImage(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile)
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCWSTR FileName, BOOL fIsMainFile, REFGUID guidFileType)
HGLOBAL BitmapToClipboardDIB(HBITMAP hBitmap)
HBITMAP BitmapFromHEMF(HENHMETAFILE hEMF)
HBITMAP getSubImage(HBITMAP hbmWhole, const RECT &rcPartial)
HBITMAP CachedBufferDIB(HBITMAP hbm, int minimalWidth, int minimalHeight)
HBITMAP BitmapFromClipboardDIB(HGLOBAL hGlobal)
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono)
HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono)
HBITMAP ConvertToBlackAndWhite(HBITMAP hbm)
HBITMAP DoLoadImageFile(HWND hwnd, LPCWSTR name, BOOL fIsMainFile)
HBITMAP CopyMonoImage(HBITMAP hbm, INT cx, INT cy)
int GetDIBHeight(HBITMAP hBitmap)
float PpcmFromDpi(float dpi)
HBITMAP CreateMonoBitmap(int width, int height, BOOL bWhite)
HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile)
BOOL IsBitmapBlackAndWhite(HBITMAP hbm)
HBITMAP CreateColorDIB(int width, int height, COLORREF rgb)
int GetDIBWidth(HBITMAP hBitmap)
#define INVALID_HANDLE_VALUE
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
_Check_return_ long __cdecl labs(_In_ long x)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static float(__cdecl *square_half_float)(float x
_In_ HBITMAP _In_ UINT _In_ UINT _Inout_ LPBITMAPINFO pbmi
_Out_opt_ int _Out_opt_ int * cy
RGBQUAD bmiColorsAdditional[256 - 1]
RGBQUAD bmiColorsExtra[256 - 1]
BITMAPCOREHEADER bmciHeader
BITMAPINFOHEADER bmiHeader
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
UINT WINAPI GetDIBColorTable(HDC hDC, UINT iStartIndex, UINT cEntries, RGBQUAD *pColors)
_In_ ULONG _In_ ULONG rgb
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
int WINAPI GetDIBits(_In_ HDC hdc, _In_ HBITMAP hbm, _In_ UINT start, _In_ UINT cLines, _Out_opt_ LPVOID lpvBits, _At_((LPBITMAPINFOHEADER) lpbmi, _Inout_) LPBITMAPINFO lpbmi, _In_ UINT usage)
struct _BITMAPCOREINFO * LPBITMAPCOREINFO
struct tagRGBTRIPLE RGBTRIPLE
int WINAPI SetDIBits(_In_opt_ HDC, _In_ HBITMAP, _In_ UINT, _In_ UINT, _In_ CONST VOID *, _In_ CONST BITMAPINFO *, _In_ UINT)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
struct tagBITMAPINFO * LPBITMAPINFO
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
BOOL WINAPI SetPixelV(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
UINT WINAPI GetEnhMetaFileHeader(_In_ HENHMETAFILE hemf, _In_ UINT nSize, _Out_writes_bytes_opt_(nSize) LPENHMETAHEADER lpEnhMetaHeader)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
BOOL WINAPI PlayEnhMetaFile(_In_ HDC, _In_ HENHMETAFILE, _In_ LPCRECT)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)