From: Vijay Kiran Kamuju infyquest@gmail.com
--- dlls/gdiplus/image.c | 49 ++++++++++++++++++++++++++++++++++++-- dlls/gdiplus/tests/image.c | 38 +++++++++++++---------------- 2 files changed, 64 insertions(+), 23 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index 9002a0f7d86..a9657de6642 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -5594,11 +5594,56 @@ GpStatus WINGDIPAPI GdipDeleteEffect(CGpEffect *effect) */ GpStatus WINGDIPAPI GdipGetEffectParameterSize(CGpEffect *effect, UINT *size) { - FIXME("(%p,%p): stub\n", effect, size); + UINT sz = 0; + GpStatus status = Ok; + + TRACE("(%p,%p)\n", effect, size);
if (!effect || !size) return InvalidParameter; - return NotImplemented; + + switch (effect->type) + { + case BlurEffect: + sz = sizeof(struct BlurParams); + break; + case SharpenEffect: + sz = sizeof(struct SharpenParams); + break; + case TintEffect: + sz = sizeof(struct TintParams); + break; + case RedEyeCorrectionEffect: + sz = sizeof(struct RedEyeCorrectionParams); + break; + case ColorMatrixEffect: + sz = sizeof(ColorMatrix); + break; + case ColorLUTEffect: + sz = sizeof(struct ColorLUTParams); + break; + case BrightnessContrastEffect: + sz = sizeof(struct BrightnessContrastParams); + break; + case HueSaturationLightnessEffect: + sz = sizeof(struct HueSaturationLightnessParams); + break; + case ColorBalanceEffect: + sz = sizeof(struct ColorBalanceParams); + break; + case LevelsEffect: + sz = sizeof(struct LevelsParams); + break; + case ColorCurveEffect: + sz = sizeof(struct ColorCurveParams); + break; + default: + status = InvalidParameter; + break; + } + + *size = sz; + return status; }
/***************************************************************************** diff --git a/dlls/gdiplus/tests/image.c b/dlls/gdiplus/tests/image.c index bfcd149f4fa..fafbfdab113 100644 --- a/dlls/gdiplus/tests/image.c +++ b/dlls/gdiplus/tests/image.c @@ -5418,20 +5418,24 @@ static void test_createeffect(void) static const struct test_data { const GUID *effect; const UINT parameters_number; - const BOOL todo; } td[] = { - { &BlurEffectGuid, 8, TRUE }, - { &BrightnessContrastEffectGuid, 8, TRUE }, - { &ColorBalanceEffectGuid, 12, TRUE }, - { &ColorCurveEffectGuid, 12, TRUE }, - { &ColorLUTEffectGuid, 1024, TRUE }, - { &ColorMatrixEffectGuid, 100, TRUE }, - { &HueSaturationLightnessEffectGuid, 12, TRUE }, - { &LevelsEffectGuid, 12, TRUE }, - { &RedEyeCorrectionEffectGuid, 8, TRUE }, - { &SharpenEffectGuid, 8, TRUE }, - { &TintEffectGuid, 8, TRUE }, + { &BlurEffectGuid, 8 }, + { &BrightnessContrastEffectGuid, 8 }, + { &ColorBalanceEffectGuid, 12 }, + { &ColorCurveEffectGuid, 12 }, + { &ColorLUTEffectGuid, 1024 }, + { &ColorMatrixEffectGuid, 100 }, + { &HueSaturationLightnessEffectGuid, 12 }, + { &LevelsEffectGuid, 12 }, + /* Parameter Size for Red Eye Correction effect is different for 64 bits build */ +#ifdef _WIN64 + { &RedEyeCorrectionEffectGuid, 16 }, +#else + { &RedEyeCorrectionEffectGuid, 8 }, +#endif + { &SharpenEffectGuid, 8 }, + { &TintEffectGuid, 8 }, };
pGdipCreateEffect = (void*)GetProcAddress( mod, "GdipCreateEffect"); @@ -5466,15 +5470,7 @@ static void test_createeffect(void) param_size = 0; stat = pGdipGetEffectParameterSize(effect, ¶m_size); expect(Ok, stat); -#ifdef _WIN64 - /* Parameter Size for Red Eye Correction effect is different for 64 bits build */ - if (td[i].effect == &RedEyeCorrectionEffectGuid) - todo_wine_if(td[i].todo) expect(16, param_size); - else - todo_wine_if(td[i].todo) expect(td[i].parameters_number, param_size); -#else - todo_wine_if(td[i].todo) expect(td[i].parameters_number, param_size); -#endif + expect(td[i].parameters_number, param_size); stat = pGdipDeleteEffect(effect); expect(Ok, stat); }