More compiler error fixes.

This commit is contained in:
Pietro Gagliardi 2016-04-23 22:15:33 -04:00
parent 47aff78aae
commit 5236aa5855
6 changed files with 66 additions and 64 deletions

View File

@ -4,14 +4,14 @@
// TODO disable logging and stopping on no-debug builds // TODO disable logging and stopping on no-debug builds
// TODO are the newlines needed? // TODO are the newlines needed?
static void printDebug(WCHAR *msg) static void printDebug(const WCHAR *msg)
{ {
OutputDebugStringW(msg); OutputDebugStringW(msg);
} }
#define debugfmt L"%s:" L ## PRIiMAX L":%s()" #define debugfmt L"%s:%s:%s()"
HRESULT _logLastError(debugargs, const WCHAR *func, const WCHAR *s) HRESULT _logLastError(debugargs, const WCHAR *s)
{ {
DWORD le; DWORD le;
WCHAR *msg; WCHAR *msg;
@ -92,7 +92,7 @@ void _implbug(debugargs, const WCHAR *format, ...)
formatted = debugvstrf(format, ap); formatted = debugvstrf(format, ap);
va_end(ap); va_end(ap);
if (formatted == NULL) { if (formatted == NULL) {
onerr = s; onerr = format;
goto bad; goto bad;
} }

View File

@ -14,7 +14,7 @@ HRESULT initDraw(void)
// TODO make this an option // TODO make this an option
opts.debugLevel = D2D1_DEBUG_LEVEL_NONE; opts.debugLevel = D2D1_DEBUG_LEVEL_NONE;
return D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, return D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,
&IID_ID2D1Factory, IID_ID2D1Factory,
&opts, &opts,
(void **) (&d2dfactory)); (void **) (&d2dfactory));
} }
@ -115,7 +115,7 @@ void uiDrawPathNewFigure(uiDrawPath *p, double x, double y)
D2D1_POINT_2F pt; D2D1_POINT_2F pt;
if (p->inFigure) if (p->inFigure)
p-sink->EndFigure(D2D1_FIGURE_END_OPEN); p->sink->EndFigure(D2D1_FIGURE_END_OPEN);
pt.x = x; pt.x = x;
pt.y = y; pt.y = y;
p->sink->BeginFigure(pt, D2D1_FIGURE_BEGIN_FILLED); p->sink->BeginFigure(pt, D2D1_FIGURE_BEGIN_FILLED);
@ -371,7 +371,7 @@ static ID2D1GradientStopCollection *mkstops(uiDrawBrush *b, ID2D1RenderTarget *r
size_t i; size_t i;
HRESULT hr; HRESULT hr;
stops = uiAlloc(b->NumStops * sizeof (D2D1_GRADIENT_STOP), "D2D1_GRADIENT_STOP[]"); stops = (D2D1_GRADIENT_STOP *) uiAlloc(b->NumStops * sizeof (D2D1_GRADIENT_STOP), "D2D1_GRADIENT_STOP[]");
for (i = 0; i < b->NumStops; i++) { for (i = 0; i < b->NumStops; i++) {
stops[i].position = b->Stops[i].Pos; stops[i].position = b->Stops[i].Pos;
stops[i].color.r = b->Stops[i].R; stops[i].color.r = b->Stops[i].R;
@ -510,7 +510,7 @@ static ID2D1Layer *applyClip(uiDrawContext *c)
params.contentBounds.bottom = FLT_MAX; params.contentBounds.bottom = FLT_MAX;
params.geometricMask = (ID2D1Geometry *) (c->currentClip); params.geometricMask = (ID2D1Geometry *) (c->currentClip);
// TODO is this correct? // TODO is this correct?
params.maskAntialiasMode = ID2D1RenderTarget_GetAntialiasMode(c->rt); params.maskAntialiasMode = c->rt->GetAntialiasMode();
// identity matrix // identity matrix
params.maskTransform._11 = 1; params.maskTransform._11 = 1;
params.maskTransform._22 = 1; params.maskTransform._22 = 1;
@ -766,7 +766,7 @@ void uiDrawClip(uiDrawContext *c, uiDrawPath *path)
// otherwise we have to intersect the current path with the new one // otherwise we have to intersect the current path with the new one
// we do that into a new path, and then replace c->currentClip with that new path // we do that into a new path, and then replace c->currentClip with that new path
hr = d2dfactoryCreatePathGeometry(&newPath); hr = d2dfactory->CreatePathGeometry(&newPath);
if (hr != S_OK) if (hr != S_OK)
logHRESULT(L"error creating new path", hr); logHRESULT(L"error creating new path", hr);
hr = newPath->Open(&newSink); hr = newPath->Open(&newSink);

View File

@ -36,7 +36,7 @@ char *uiDrawFontFamiliesFamily(uiDrawFontFamilies *ff, uintmax_t n)
hr = ff->fc->fonts->GetFontFamily(n, &family); hr = ff->fc->fonts->GetFontFamily(n, &family);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting font out of collection in uiDrawFontFamiliesFamily()", hr); logHRESULT(L"error getting font out of collection", hr);
wname = fontCollectionFamilyName(ff->fc, family); wname = fontCollectionFamilyName(ff->fc, family);
name = toUTF8(wname); name = toUTF8(wname);
uiFree(wname); uiFree(wname);
@ -236,17 +236,17 @@ uiDrawTextFont *uiDrawLoadClosestFont(const uiDrawTextFontDescriptor *desc)
// always get the latest available font information // always get the latest available font information
hr = dwfactory->GetSystemFontCollection(&collection, TRUE); hr = dwfactory->GetSystemFontCollection(&collection, TRUE);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting system font collection in uiDrawLoadClosestFont()", hr); logHRESULT(L"error getting system font collection", hr);
wfamily = toUTF16(desc->Family); wfamily = toUTF16(desc->Family);
hr = collection->FindFamilyName(wfamily, &index, &exists); hr = collection->FindFamilyName(wfamily, &index, &exists);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error finding font family in uiDrawLoadClosestFont()", hr); logHRESULT(L"error finding font family", hr);
if (!exists) if (!exists)
complain("TODO family not found in uiDrawLoadClosestFont()", hr); complain("TODO family not found in uiDrawLoadClosestFont()", hr);
hr = collection->GetFontFamily(index, &family); hr = collection->GetFontFamily(index, &family);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error loading font family in uiDrawLoadClosestFont()", hr); logHRESULT(L"error loading font family", hr);
attr.weight = desc->Weight; attr.weight = desc->Weight;
attr.italic = desc->Italic; attr.italic = desc->Italic;
@ -258,7 +258,7 @@ uiDrawTextFont *uiDrawLoadClosestFont(const uiDrawTextFontDescriptor *desc)
attr.ditalic, attr.ditalic,
&match); &match);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error loading font in uiDrawLoadClosestFont()", hr); logHRESULT(L"error loading font", hr);
font = mkTextFont(match, font = mkTextFont(match,
FALSE, // we own the initial reference; no need to add another one FALSE, // we own the initial reference; no need to add another one
@ -360,7 +360,7 @@ uiDrawTextLayout *uiDrawNewTextLayout(const char *text, uiDrawTextFont *defaultF
L"", L"",
&(layout->format)); &(layout->format));
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error creating IDWriteTextFormat in uiDrawNewTextLayout()", hr); logHRESULT(L"error creating IDWriteTextFormat", hr);
layout->text = toUTF16(text); layout->text = toUTF16(text);
layout->textlen = wcslen(layout->text); layout->textlen = wcslen(layout->text);
@ -395,7 +395,7 @@ IDWriteTextLayout *prepareLayout(uiDrawTextLayout *layout, ID2D1RenderTarget *rt
FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX,
&dl); &dl);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error creating IDWriteTextLayout in prepareLayout()", hr); logHRESULT(L"error creating IDWriteTextLayout", hr);
for (const struct layoutAttr &attr : *(layout->attrs)) { for (const struct layoutAttr &attr : *(layout->attrs)) {
range.startPosition = attr.start; range.startPosition = attr.start;
@ -410,10 +410,10 @@ IDWriteTextLayout *prepareLayout(uiDrawTextLayout *layout, ID2D1RenderTarget *rt
break; break;
default: default:
hr = E_FAIL; hr = E_FAIL;
logHRESULT("invalid text attribute type in prepareLayout()", hr); logHRESULT(L"invalid text attribute type", hr);
} }
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error adding attribute to text layout in prepareLayout()", hr); logHRESULT(L"error adding attribute to text layout", hr);
} }
// and set the width // and set the width
@ -427,10 +427,10 @@ IDWriteTextLayout *prepareLayout(uiDrawTextLayout *layout, ID2D1RenderTarget *rt
} }
hr = dl->SetWordWrapping(wrap); hr = dl->SetWordWrapping(wrap);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error setting word wrapping mode in prepareLayout()", hr); logHRESULT(L"error setting word wrapping mode", hr);
hr = dl->SetMaxWidth(maxWidth); hr = dl->SetMaxWidth(maxWidth);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error setting max layout width in prepareLayout()", hr); logHRESULT(L"error setting max layout width", hr);
return dl; return dl;
} }
@ -451,7 +451,7 @@ void uiDrawTextLayoutExtents(uiDrawTextLayout *layout, double *width, double *he
dl = prepareLayout(layout, NULL); dl = prepareLayout(layout, NULL);
hr = dl->GetMetrics(&metrics); hr = dl->GetMetrics(&metrics);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting layout metrics in uiDrawTextLayoutExtents()", hr); logHRESULT(L"error getting layout metrics", hr);
*width = metrics.width; *width = metrics.width;
// TODO make sure the behavior of this on empty strings is the same on all platforms // TODO make sure the behavior of this on empty strings is the same on all platforms
*height = metrics.height; *height = metrics.height;

View File

@ -1,5 +1,6 @@
// 14 april 2016 // 14 april 2016
#include "uipriv_windows.hpp" #include "uipriv_windows.hpp"
// TODO really migrate?
IDWriteFactory *dwfactory = NULL; IDWriteFactory *dwfactory = NULL;
@ -25,7 +26,7 @@ fontCollection *loadFontCollection(void)
// always get the latest available font information // always get the latest available font information
hr = dwfactory->GetSystemFontCollection(&(fc->fonts), TRUE); hr = dwfactory->GetSystemFontCollection(&(fc->fonts), TRUE);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting system font collection in loadFontCollection()", hr); logHRESULT(L"error getting system font collection", hr);
fc->userLocaleSuccess = GetUserDefaultLocaleName(fc->userLocale, LOCALE_NAME_MAX_LENGTH); fc->userLocaleSuccess = GetUserDefaultLocaleName(fc->userLocale, LOCALE_NAME_MAX_LENGTH);
return fc; return fc;
} }
@ -38,7 +39,7 @@ WCHAR *fontCollectionFamilyName(fontCollection *fc, IDWriteFontFamily *family)
hr = family->GetFamilyNames(&names); hr = family->GetFamilyNames(&names);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting names of font out in fontCollectionFamilyName()", hr); logHRESULT(L"error getting names of font out", hr);
str = fontCollectionCorrectString(fc, names); str = fontCollectionCorrectString(fc, names);
names->Release(); names->Release();
return str; return str;
@ -70,12 +71,12 @@ WCHAR *fontCollectionCorrectString(fontCollection *fc, IDWriteLocalizedStrings *
hr = names->GetStringLength(index, &length); hr = names->GetStringLength(index, &length);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting length of font name in fontCollectionFamilyName()", hr); logHRESULT(L"error getting length of font name", hr);
// GetStringLength() does not include the null terminator, but GetString() does // GetStringLength() does not include the null terminator, but GetString() does
wname = (WCHAR *) uiAlloc((length + 1) * sizeof (WCHAR), "WCHAR[]"); wname = (WCHAR *) uiAlloc((length + 1) * sizeof (WCHAR), "WCHAR[]");
hr = names->GetString(index, wname, length + 1); hr = names->GetString(index, wname, length + 1);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting font name in fontCollectionFamilyName()", hr); logHRESULT(L"error getting font name", hr);
return wname; return wname;
} }

View File

@ -38,7 +38,7 @@ static LRESULT cbAddString(HWND cb, const WCHAR *str)
lr = SendMessageW(cb, CB_ADDSTRING, 0, (LPARAM) str); lr = SendMessageW(cb, CB_ADDSTRING, 0, (LPARAM) str);
if (lr == (LRESULT) CB_ERR || lr == (LRESULT) CB_ERRSPACE) if (lr == (LRESULT) CB_ERR || lr == (LRESULT) CB_ERRSPACE)
logLastError("error adding item to combobox in cbAddString()"); logLastError(L"error adding item to combobox");
return lr; return lr;
} }
@ -48,7 +48,7 @@ static LRESULT cbInsertString(HWND cb, const WCHAR *str, WPARAM pos)
lr = SendMessageW(cb, CB_INSERTSTRING, pos, (LPARAM) str); lr = SendMessageW(cb, CB_INSERTSTRING, pos, (LPARAM) str);
if (lr != (LRESULT) pos) if (lr != (LRESULT) pos)
logLastError("error inserting item to combobox in cbInsertString()"); logLastError(L"error inserting item to combobox");
return lr; return lr;
} }
@ -58,14 +58,14 @@ static LRESULT cbGetItemData(HWND cb, WPARAM item)
data = SendMessageW(cb, CB_GETITEMDATA, item, 0); data = SendMessageW(cb, CB_GETITEMDATA, item, 0);
if (data == (LRESULT) CB_ERR) if (data == (LRESULT) CB_ERR)
logLastError("error getting combobox item data for font dialog in cbGetItemData()"); logLastError(L"error getting combobox item data for font dialog");
return data; return data;
} }
static void cbSetItemData(HWND cb, WPARAM item, LPARAM data) static void cbSetItemData(HWND cb, WPARAM item, LPARAM data)
{ {
if (SendMessageW(cb, CB_SETITEMDATA, item, data) == (LRESULT) CB_ERR) if (SendMessageW(cb, CB_SETITEMDATA, item, data) == (LRESULT) CB_ERR)
logLastError("error setting combobox item data in cbSetItemData()"); logLastError(L"error setting combobox item data");
} }
static BOOL cbGetCurSel(HWND cb, LRESULT *sel) static BOOL cbGetCurSel(HWND cb, LRESULT *sel)
@ -83,7 +83,7 @@ static BOOL cbGetCurSel(HWND cb, LRESULT *sel)
static void cbSetCurSel(HWND cb, WPARAM item) static void cbSetCurSel(HWND cb, WPARAM item)
{ {
if (SendMessageW(cb, CB_SETCURSEL, item, 0) != (LRESULT) item) if (SendMessageW(cb, CB_SETCURSEL, item, 0) != (LRESULT) item)
logLastError("error selecting combobox item in cbSetCurSel()"); logLastError(L"error selecting combobox item");
} }
static LRESULT cbGetCount(HWND cb) static LRESULT cbGetCount(HWND cb)
@ -92,7 +92,7 @@ static LRESULT cbGetCount(HWND cb)
n = SendMessageW(cb, CB_GETCOUNT, 0, 0); n = SendMessageW(cb, CB_GETCOUNT, 0, 0);
if (n == (LRESULT) CB_ERR) if (n == (LRESULT) CB_ERR)
logLastError("error getting combobox item count in cbGetCount()"); logLastError(L"error getting combobox item count");
return n; return n;
} }
@ -117,10 +117,10 @@ static WCHAR *cbGetItemText(HWND cb, WPARAM item)
// note: neither message includes the terminating L'\0' // note: neither message includes the terminating L'\0'
len = SendMessageW(cb, CB_GETLBTEXTLEN, item, 0); len = SendMessageW(cb, CB_GETLBTEXTLEN, item, 0);
if (len == (LRESULT) CB_ERR) if (len == (LRESULT) CB_ERR)
logLastError("error getting item text length from combobox in cbGetItemText()"); logLastError(L"error getting item text length from combobox");
text = (WCHAR *) uiAlloc((len + 1) * sizeof (WCHAR), "WCHAR[]"); text = (WCHAR *) uiAlloc((len + 1) * sizeof (WCHAR), "WCHAR[]");
if (SendMessageW(cb, CB_GETLBTEXT, item, (LPARAM) text) != len) if (SendMessageW(cb, CB_GETLBTEXT, item, (LPARAM) text) != len)
logLastError("error getting item text from combobox in cbGetItemText()"); logLastError(L"error getting item text from combobox");
return text; return text;
} }
@ -143,12 +143,12 @@ static BOOL cbTypeToSelect(HWND cb, LRESULT *posOut, BOOL restoreAfter)
*posOut = pos; *posOut = pos;
if (restoreAfter) if (restoreAfter)
if (SendMessageW(cb, WM_SETTEXT, 0, (LPARAM) text) != (LRESULT) TRUE) if (SendMessageW(cb, WM_SETTEXT, 0, (LPARAM) text) != (LRESULT) TRUE)
logLastError("error restoring old combobox text in cbTypeToSelect()"); logLastError(L"error restoring old combobox text");
uiFree(text); uiFree(text);
// and restore the selection like above // and restore the selection like above
// TODO isn't there a 32-bit version of this // TODO isn't there a 32-bit version of this
if (SendMessageW(cb, CB_SETEDITSEL, 0, MAKELPARAM(selStart, selEnd)) != (LRESULT) TRUE) if (SendMessageW(cb, CB_SETEDITSEL, 0, MAKELPARAM(selStart, selEnd)) != (LRESULT) TRUE)
logLastError("error restoring combobox edit selection in cbTypeToSelect()"); logLastError(L"error restoring combobox edit selection");
return TRUE; return TRUE;
} }
@ -165,7 +165,7 @@ static WCHAR *fontStyleName(struct fontCollection *fc, IDWriteFont *font)
hr = font->GetFaceNames(&str); hr = font->GetFaceNames(&str);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting font style name for font dialog in fontStyleName()", hr); logHRESULT(L"error getting font style name for font dialog", hr);
wstr = fontCollectionCorrectString(fc, str); wstr = fontCollectionCorrectString(fc, str);
str->Release(); str->Release();
return wstr; return wstr;
@ -175,7 +175,7 @@ static void queueRedrawSampleText(struct fontDialog *f)
{ {
// TODO TRUE? // TODO TRUE?
if (InvalidateRect(f->sampleBox, NULL, TRUE) == 0) if (InvalidateRect(f->sampleBox, NULL, TRUE) == 0)
logLastError("error queueing a redraw of the font dialog's sample text in queueRedrawSampleText()"); logLastError(L"error queueing a redraw of the font dialog's sample text");
} }
static void styleChanged(struct fontDialog *f) static void styleChanged(struct fontDialog *f)
@ -234,7 +234,7 @@ static void familyChanged(struct fontDialog *f)
f->style, f->style,
&matchFont); &matchFont);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error finding first matching font to previous style in font dialog in familyChanged()", hr); logHRESULT(L"error finding first matching font to previous style in font dialog", hr);
// we can't just compare pointers; a "newly created" object comes out // we can't just compare pointers; a "newly created" object comes out
// the Choose Font sample appears to do this instead // the Choose Font sample appears to do this instead
weight = matchFont->GetWeight(); weight = matchFont->GetWeight();
@ -249,7 +249,7 @@ static void familyChanged(struct fontDialog *f)
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
hr = family->GetFont(i, &font); hr = family->GetFont(i, &font);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting font for filling styles box in familyChanged()", hr); logHRESULT(L"error getting font for filling styles box", hr);
label = fontStyleName(f->fc, font); label = fontStyleName(f->fc, font);
pos = cbAddString(f->styleCombobox, label); pos = cbAddString(f->styleCombobox, label);
uiFree(label); uiFree(label);
@ -355,7 +355,7 @@ static void fontDialogDrawSampleText(struct fontDialog *f, ID2D1RenderTarget *rt
&props, &props,
&black); &black);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error creating solid brush in fontDialogDrawSampleText()", hr); logHRESULT(L"error creating solid brush", hr);
font = (IDWriteFont *) cbGetItemData(f->styleCombobox, (WPARAM) f->curStyle); font = (IDWriteFont *) cbGetItemData(f->styleCombobox, (WPARAM) f->curStyle);
hr = font->GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT, &sampleStrings, &exists); hr = font->GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT, &sampleStrings, &exists);
@ -382,7 +382,7 @@ static void fontDialogDrawSampleText(struct fontDialog *f, ID2D1RenderTarget *rt
L"", L"",
&format); &format);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error creating IDWriteTextFormat in fontDialogDrawSampleText()", hr); logHRESULT(L"error creating IDWriteTextFormat", hr);
uiFree(family); uiFree(family);
rect.left = 0; rect.left = 0;
@ -416,7 +416,7 @@ static LRESULT CALLBACK fontDialogSampleSubProc(HWND hwnd, UINT uMsg, WPARAM wPa
return 0; return 0;
case WM_NCDESTROY: case WM_NCDESTROY:
if (RemoveWindowSubclass(hwnd, fontDialogSampleSubProc, uIdSubclass) == FALSE) if (RemoveWindowSubclass(hwnd, fontDialogSampleSubProc, uIdSubclass) == FALSE)
logLastError("error removing font dialog sample text subclass in fontDialogSampleSubProc()"); logLastError(L"error removing font dialog sample text subclass");
break; break;
} }
return DefSubclassProc(hwnd, uMsg, wParam, lParam); return DefSubclassProc(hwnd, uMsg, wParam, lParam);
@ -437,11 +437,11 @@ static void setupInitialFontDialogState(struct fontDialog *f)
_snwprintf(wsize, 512, L"%g", f->params->size); _snwprintf(wsize, 512, L"%g", f->params->size);
// TODO make this a setWindowText() // TODO make this a setWindowText()
if (SendMessageW(f->sizeCombobox, WM_SETTEXT, 0, (LPARAM) wsize) != (LRESULT) TRUE) if (SendMessageW(f->sizeCombobox, WM_SETTEXT, 0, (LPARAM) wsize) != (LRESULT) TRUE)
logLastError("error setting size combobox to initial font size in setupInitialFontDialogState()"); logLastError(L"error setting size combobox to initial font size");
sizeEdited(f); sizeEdited(f);
if (cbGetCurSel(f->sizeCombobox, &pos)) if (cbGetCurSel(f->sizeCombobox, &pos))
if (SendMessageW(f->sizeCombobox, CB_SETTOPINDEX, (WPARAM) pos, 0) != 0) if (SendMessageW(f->sizeCombobox, CB_SETTOPINDEX, (WPARAM) pos, 0) != 0)
logLastError("error making chosen size topmost in the size combobox in setupInitialFontDialogState()"); logLastError(L"error making chosen size topmost in the size combobox");
// now we set the family and style // now we set the family and style
// we do this by first setting the previous style attributes, then simulating a font entered // we do this by first setting the previous style attributes, then simulating a font entered
@ -449,7 +449,7 @@ static void setupInitialFontDialogState(struct fontDialog *f)
f->style = f->params->font->GetStyle(); f->style = f->params->font->GetStyle();
f->stretch = f->params->font->GetStretch(); f->stretch = f->params->font->GetStretch();
if (SendMessageW(f->familyCombobox, WM_SETTEXT, 0, (LPARAM) (f->params->familyName)) != (LRESULT) TRUE) if (SendMessageW(f->familyCombobox, WM_SETTEXT, 0, (LPARAM) (f->params->familyName)) != (LRESULT) TRUE)
logLastError("error setting family combobox to initial font family in setupInitialFontDialogState()"); logLastError(L"error setting family combobox to initial font family");
familyEdited(f); familyEdited(f);
} }
@ -469,20 +469,20 @@ static struct fontDialog *beginFontDialog(HWND hwnd, LPARAM lParam)
f->familyCombobox = GetDlgItem(f->hwnd, rcFontFamilyCombobox); f->familyCombobox = GetDlgItem(f->hwnd, rcFontFamilyCombobox);
if (f->familyCombobox == NULL) if (f->familyCombobox == NULL)
logLastError("error getting font family combobox handle in beginFontDialog()"); logLastError(L"error getting font family combobox handle");
f->styleCombobox = GetDlgItem(f->hwnd, rcFontStyleCombobox); f->styleCombobox = GetDlgItem(f->hwnd, rcFontStyleCombobox);
if (f->styleCombobox == NULL) if (f->styleCombobox == NULL)
logLastError("error getting font style combobox handle in beginFontDialog()"); logLastError(L"error getting font style combobox handle");
f->sizeCombobox = GetDlgItem(f->hwnd, rcFontSizeCombobox); f->sizeCombobox = GetDlgItem(f->hwnd, rcFontSizeCombobox);
if (f->sizeCombobox == NULL) if (f->sizeCombobox == NULL)
logLastError("error getting font size combobox handle in beginFontDialog()"); logLastError(L"error getting font size combobox handle");
f->fc = loadFontCollection(); f->fc = loadFontCollection();
nFamilies = f->fc->fonts->GetFontFamilyCount(); nFamilies = f->fc->fonts->GetFontFamilyCount();
for (i = 0; i < nFamilies; i++) { for (i = 0; i < nFamilies; i++) {
hr = f->fc->fonts->GetFontFamily(i, &family); hr = f->fc->fonts->GetFontFamily(i, &family);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting font family in beginFontDialog()", hr); logHRESULT(L"error getting font family", hr);
wname = fontCollectionFamilyName(f->fc, family); wname = fontCollectionFamilyName(f->fc, family);
pos = cbAddString(f->familyCombobox, wname); pos = cbAddString(f->familyCombobox, wname);
uiFree(wname); uiFree(wname);
@ -494,12 +494,11 @@ static struct fontDialog *beginFontDialog(HWND hwnd, LPARAM lParam)
samplePlacement = GetDlgItem(f->hwnd, rcFontSamplePlacement); samplePlacement = GetDlgItem(f->hwnd, rcFontSamplePlacement);
if (samplePlacement == NULL) if (samplePlacement == NULL)
logLastError("error getting sample placement static control handle in beginFontDialog()"); logLastError(L"error getting sample placement static control handle");
if (GetWindowRect(samplePlacement, &(f->sampleRect)) == 0) if (GetWindowRect(samplePlacement, &(f->sampleRect)) == 0)
logLastError("error getting sample placement in beginFontDialog()"); logLastError(L"error getting sample placement");
mapWindowRect(NULL, f->hwnd, &(f->sampleRect)); mapWindowRect(NULL, f->hwnd, &(f->sampleRect));
if (DestroyWindow(samplePlacement) == 0) uiWindowsEnsureDestroyWindow(samplePlacement);
logLastError("error getting rid of the sample placement static control in beginFontDialog()");
f->sampleBox = newD2DScratch(f->hwnd, &(f->sampleRect), (HMENU) rcFontSamplePlacement, fontDialogSampleSubProc, (DWORD_PTR) f); f->sampleBox = newD2DScratch(f->hwnd, &(f->sampleRect), (HMENU) rcFontSamplePlacement, fontDialogSampleSubProc, (DWORD_PTR) f);
setupInitialFontDialogState(f); setupInitialFontDialogState(f);
@ -512,7 +511,7 @@ static void endFontDialog(struct fontDialog *f, INT_PTR code)
cbWipeAndReleaseData(f->familyCombobox); cbWipeAndReleaseData(f->familyCombobox);
fontCollectionFree(f->fc); fontCollectionFree(f->fc);
if (EndDialog(f->hwnd, code) == 0) if (EndDialog(f->hwnd, code) == 0)
logLastError("error ending font dialog in endFontDialog()"); logLastError(L"error ending font dialog");
uiFree(f); uiFree(f);
} }
@ -607,7 +606,7 @@ BOOL showFontDialog(HWND parent, struct fontDialogParams *params)
// make the compiler happy by putting the return after the switch // make the compiler happy by putting the return after the switch
break; break;
default: default:
logLastError("error running font dialog in showFontDialog()"); logLastError(L"error running font dialog");
} }
return TRUE; return TRUE;
} }
@ -621,12 +620,12 @@ static IDWriteFontFamily *tryFindFamily(IDWriteFontCollection *fc, const WCHAR *
hr = fc->FindFamilyName(name, &index, &exists); hr = fc->FindFamilyName(name, &index, &exists);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error finding font family for font dialog in tryFindFamily()", hr); logHRESULT(L"error finding font family for font dialog", hr);
if (!exists) if (!exists)
return NULL; return NULL;
hr = fc->GetFontFamily(index, &family); hr = fc->GetFontFamily(index, &family);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error extracting found font family for font dialog in tryFindFamily()", hr); logHRESULT(L"error extracting found font family for font dialog", hr);
return family; return family;
} }
@ -652,7 +651,7 @@ void loadInitialFontDialogParams(struct fontDialogParams *params)
if (family == NULL) { if (family == NULL) {
hr = fc->fonts->GetFontFamily(0, &family); hr = fc->fonts->GetFontFamily(0, &family);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting first font out of font collection (worst case scenario) in loadInitialFontDialogParams()", hr); logHRESULT(L"error getting first font out of font collection (worst case scenario)", hr);
} }
} }
} }
@ -664,7 +663,7 @@ void loadInitialFontDialogParams(struct fontDialogParams *params)
DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STYLE_NORMAL,
&font); &font);
if (hr != S_OK) if (hr != S_OK)
logHRESULT("error getting Regular font from Arial in loadInitialFontDialogParams()", hr); logHRESULT(L"error getting Regular font from Arial", hr);
params->font = font; params->font = font;
params->size = 10; params->size = 10;

View File

@ -42,17 +42,19 @@ extern void CRLFtoLF(const char *s);
// debug.cpp // debug.cpp
// see http://stackoverflow.com/questions/14421656/is-there-widely-available-wide-character-variant-of-file // see http://stackoverflow.com/questions/14421656/is-there-widely-available-wide-character-variant-of-file
// TODO turn line into a const WCHAR* this way // we turn __LINE__ into a string because PRIiMAX can't be converted to a wide string in MSVC (it seems to be defined as "ll" "i" according to the compiler errors)
// also note the use of __FUNCTION__ here; __func__ doesn't seem to work for some reason // also note the use of __FUNCTION__ here; __func__ doesn't seem to work for some reason
#define _ws2(m) L ## m #define _ws2(m) L ## m
#define _ws(m) _ws2(m) #define _ws(m) _ws2(m)
#define debugargs const WCHAR *file, uintmax_t line, const WCHAR *func #define _ws2n(m) L ## #m
#define _wsn(m) _ws2n(m)
#define debugargs const WCHAR *file, const WCHAR *line, const WCHAR *func
extern HRESULT _logLastError(debugargs, const WCHAR *s); extern HRESULT _logLastError(debugargs, const WCHAR *s);
#define logLastError(s) _logLastError(_ws(__FILE__), __LINE__, _ws(__FUNCTION__), s) #define logLastError(s) _logLastError(_ws(__FILE__), _wsn(__LINE__), _ws(__FUNCTION__), s)
extern HRESULT _logHRESULT(debugargs, const WCHAR *s, HRESULT hr); extern HRESULT _logHRESULT(debugargs, const WCHAR *s, HRESULT hr);
#define logHRESULT(s, hr) _logHRESULT(_ws(__FILE__), __LINE__, _ws(__FUNCTION__), s, hr) #define logHRESULT(s, hr) _logHRESULT(_ws(__FILE__), _wsn(__LINE__), _ws(__FUNCTION__), s, hr)
extern void _implbug(debugargs, const WCHAR *format, ...); extern void _implbug(debugargs, const WCHAR *format, ...);
#define implbug(...) _implbug(_ws(__FILE__), __LINE__, _ws(__FUNCTION__), __VA_LIST__) #define implbug(...) _implbug(_ws(__FILE__), _wsn(__LINE__), _ws(__FUNCTION__), __VA_LIST__)
// winutil.cpp // winutil.cpp
extern int windowClassOf(HWND hwnd, ...); extern int windowClassOf(HWND hwnd, ...);