From c9aa393a4db15eeb1ea29aaf5bca4b2570a0cfab Mon Sep 17 00:00:00 2001 From: Andrea Canciani Date: Tue, 27 Jul 2010 14:43:15 +0200 Subject: [PATCH] quartz: Assert upon invalid enum values Invalid enum values were being ignored (and replaced by a default value). This behavior is not desirable on development builds, because an explicit failure is much easier to track. Assertions allow release builds to keep on with the old behaviour, while development builds fail as soon as the invalid operaiton is performed. --- src/cairo-quartz-surface.c | 56 ++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c index a89e0c244..d0c339147 100644 --- a/src/cairo-quartz-surface.c +++ b/src/cairo-quartz-surface.c @@ -538,44 +538,58 @@ static inline CGLineCap _cairo_quartz_cairo_line_cap_to_quartz (cairo_line_cap_t ccap) { switch (ccap) { - case CAIRO_LINE_CAP_BUTT: return kCGLineCapButt; break; - case CAIRO_LINE_CAP_ROUND: return kCGLineCapRound; break; - case CAIRO_LINE_CAP_SQUARE: return kCGLineCapSquare; break; - } + default: + ASSERT_NOT_REACHED; - return kCGLineCapButt; + case CAIRO_LINE_CAP_BUTT: + return kCGLineCapButt; + + case CAIRO_LINE_CAP_ROUND: + return kCGLineCapRound; + + case CAIRO_LINE_CAP_SQUARE: + return kCGLineCapSquare; + } } static inline CGLineJoin _cairo_quartz_cairo_line_join_to_quartz (cairo_line_join_t cjoin) { switch (cjoin) { - case CAIRO_LINE_JOIN_MITER: return kCGLineJoinMiter; break; - case CAIRO_LINE_JOIN_ROUND: return kCGLineJoinRound; break; - case CAIRO_LINE_JOIN_BEVEL: return kCGLineJoinBevel; break; - } + default: + ASSERT_NOT_REACHED; - return kCGLineJoinMiter; + case CAIRO_LINE_JOIN_MITER: + return kCGLineJoinMiter; + + case CAIRO_LINE_JOIN_ROUND: + return kCGLineJoinRound; + + case CAIRO_LINE_JOIN_BEVEL: + return kCGLineJoinBevel; + } } static inline CGInterpolationQuality _cairo_quartz_filter_to_quartz (cairo_filter_t filter) { switch (filter) { - case CAIRO_FILTER_NEAREST: - return kCGInterpolationNone; + case CAIRO_FILTER_NEAREST: + return kCGInterpolationNone; - case CAIRO_FILTER_FAST: - return kCGInterpolationLow; + case CAIRO_FILTER_FAST: + return kCGInterpolationLow; - case CAIRO_FILTER_BEST: - case CAIRO_FILTER_GOOD: - case CAIRO_FILTER_BILINEAR: - case CAIRO_FILTER_GAUSSIAN: - return kCGInterpolationDefault; + case CAIRO_FILTER_BEST: + case CAIRO_FILTER_GOOD: + case CAIRO_FILTER_BILINEAR: + case CAIRO_FILTER_GAUSSIAN: + return kCGInterpolationDefault; + + default: + ASSERT_NOT_REACHED; + return kCGInterpolationDefault; } - - return kCGInterpolationDefault; } static inline void