static VOID NTAPI
IntAddSynthesizedFormats(PWINSTATION_OBJECT pWinStaObj)
{
- BOOL bHaveText, bHaveUniText, bHaveOemText, bHaveLocale, bHaveBm, bHaveDib;
+ BOOL bHaveText, bHaveUniText, bHaveOemText, bHaveLocale, bHaveBm, bHaveDib, bHaveMFP, bHaveEMF;
bHaveText = IntIsFormatAvailable(pWinStaObj, CF_TEXT);
bHaveOemText = IntIsFormatAvailable(pWinStaObj, CF_OEMTEXT);
bHaveLocale = IntIsFormatAvailable(pWinStaObj, CF_LOCALE);
bHaveBm = IntIsFormatAvailable(pWinStaObj, CF_BITMAP);
bHaveDib = IntIsFormatAvailable(pWinStaObj, CF_DIB);
+ bHaveMFP = IntIsFormatAvailable(pWinStaObj, CF_METAFILEPICT);
+ bHaveEMF = IntIsFormatAvailable(pWinStaObj, CF_ENHMETAFILE);
/* Add CF_LOCALE format if we have CF_TEXT, CF_OEMTEXT or CF_UNICODETEXT */
if (!bHaveLocale && (bHaveText || bHaveOemText || bHaveUniText))
if (!bHaveBm && bHaveDib)
IntAddFormatedData(pWinStaObj, CF_BITMAP, DATA_SYNTH_KRNL, FALSE, TRUE);
+ /* Add CF_ENHMETAFILE. Note: it is synthesized in gdi32.dll */
+ if (bHaveMFP && !bHaveEMF)
+ IntAddFormatedData(pWinStaObj, CF_ENHMETAFILE, DATA_SYNTH_USER, FALSE, TRUE);
+
+ /* Add CF_METAFILEPICT. Note: it is synthesized in gdi32.dll */
+ if (bHaveEMF && !bHaveMFP)
+ IntAddFormatedData(pWinStaObj, CF_METAFILEPICT, DATA_SYNTH_USER, FALSE, TRUE);
+
/* Note: We need to render the DIB or DIBV5 format as soon as possible
because pallette information may change */
if (!bHaveDib && bHaveBm)
IntSynthesizeBitmap(pWinStaObj, pElement);
break;
+ case CF_METAFILEPICT:
+ uSourceFmt = CF_ENHMETAFILE;
+ pElement = IntGetFormatElement(pWinStaObj, uSourceFmt);
+ break;
+
+ case CF_ENHMETAFILE:
+ uSourceFmt = CF_METAFILEPICT;
+ pElement = IntGetFormatElement(pWinStaObj, uSourceFmt);
+ break;
+
default:
ASSERT(FALSE);
}