OLD | NEW |
1 /* | 1 /* |
2 * CSS Media Query Evaluator | 2 * CSS Media Query Evaluator |
3 * | 3 * |
4 * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. | 4 * Copyright (C) 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>. |
5 * Copyright (C) 2013 Apple Inc. All rights reserved. | 5 * Copyright (C) 2013 Apple Inc. All rights reserved. |
6 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 6 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
7 * | 7 * |
8 * Redistribution and use in source and binary forms, with or without | 8 * Redistribution and use in source and binary forms, with or without |
9 * modification, are permitted provided that the following conditions | 9 * modification, are permitted provided that the following conditions |
10 * are met: | 10 * are met: |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 static bool gridMediaFeatureEval(const MediaQueryExpValue& value, MediaFeaturePr
efix op, const MediaValues&) | 319 static bool gridMediaFeatureEval(const MediaQueryExpValue& value, MediaFeaturePr
efix op, const MediaValues&) |
320 { | 320 { |
321 // if output device is bitmap, grid: 0 == true | 321 // if output device is bitmap, grid: 0 == true |
322 // assume we have bitmap device | 322 // assume we have bitmap device |
323 float number; | 323 float number; |
324 if (value.isValid() && numberValue(value, number)) | 324 if (value.isValid() && numberValue(value, number)) |
325 return compareValue(static_cast<int>(number), 0, op); | 325 return compareValue(static_cast<int>(number), 0, op); |
326 return false; | 326 return false; |
327 } | 327 } |
328 | 328 |
329 static bool computeLength(const MediaQueryExpValue& value, const MediaValues& me
diaValues, int& result) | 329 static bool computeLength(const MediaQueryExpValue& value, const MediaValues& me
diaValues, float& result) |
330 { | 330 { |
331 if (!value.isValue) | 331 if (!value.isValue) |
332 return false; | 332 return false; |
333 | 333 |
334 if (value.unit == CSSPrimitiveValue::CSS_NUMBER) { | 334 if (value.unit == CSSPrimitiveValue::CSS_NUMBER) { |
335 result = clampTo<int>(value.value); | 335 result = clampTo<int>(value.value); |
336 return !mediaValues.strictMode() || !result; | 336 return !mediaValues.strictMode() || !result; |
337 } | 337 } |
338 | 338 |
339 if (CSSPrimitiveValue::isLength(value.unit)) | 339 if (CSSPrimitiveValue::isLength(value.unit)) |
340 return mediaValues.computeLength(value.value, value.unit, result); | 340 return mediaValues.computeLength(value.value, value.unit, result); |
341 return false; | 341 return false; |
342 } | 342 } |
343 | 343 |
344 static bool deviceHeightMediaFeatureEval(const MediaQueryExpValue& value, MediaF
eaturePrefix op, const MediaValues& mediaValues) | 344 static bool deviceHeightMediaFeatureEval(const MediaQueryExpValue& value, MediaF
eaturePrefix op, const MediaValues& mediaValues) |
345 { | 345 { |
346 if (value.isValid()) { | 346 if (value.isValid()) { |
347 int length; | 347 float length; |
348 return computeLength(value, mediaValues, length) && compareValue(static_
cast<int>(mediaValues.deviceHeight()), length, op); | 348 return computeLength(value, mediaValues, length) && compareValue(static_
cast<float>(mediaValues.deviceHeight()), length, op); |
349 } | 349 } |
350 // ({,min-,max-}device-height) | 350 // ({,min-,max-}device-height) |
351 // assume if we have a device, assume non-zero | 351 // assume if we have a device, assume non-zero |
352 return true; | 352 return true; |
353 } | 353 } |
354 | 354 |
355 static bool deviceWidthMediaFeatureEval(const MediaQueryExpValue& value, MediaFe
aturePrefix op, const MediaValues& mediaValues) | 355 static bool deviceWidthMediaFeatureEval(const MediaQueryExpValue& value, MediaFe
aturePrefix op, const MediaValues& mediaValues) |
356 { | 356 { |
357 if (value.isValid()) { | 357 if (value.isValid()) { |
358 int length; | 358 float length; |
359 return computeLength(value, mediaValues, length) && compareValue(static_
cast<int>(mediaValues.deviceWidth()), length, op); | 359 return computeLength(value, mediaValues, length) && compareValue(static_
cast<float>(mediaValues.deviceWidth()), length, op); |
360 } | 360 } |
361 // ({,min-,max-}device-width) | 361 // ({,min-,max-}device-width) |
362 // assume if we have a device, assume non-zero | 362 // assume if we have a device, assume non-zero |
363 return true; | 363 return true; |
364 } | 364 } |
365 | 365 |
366 static bool heightMediaFeatureEval(const MediaQueryExpValue& value, MediaFeature
Prefix op, const MediaValues& mediaValues) | 366 static bool heightMediaFeatureEval(const MediaQueryExpValue& value, MediaFeature
Prefix op, const MediaValues& mediaValues) |
367 { | 367 { |
368 int height = mediaValues.viewportHeight(); | 368 float height = mediaValues.viewportHeight(); |
369 if (value.isValid()) { | 369 if (value.isValid()) { |
370 int length; | 370 float length; |
371 return computeLength(value, mediaValues, length) && compareValue(height,
length, op); | 371 return computeLength(value, mediaValues, length) && compareValue(height,
length, op); |
372 } | 372 } |
373 | 373 |
374 return height; | 374 return height; |
375 } | 375 } |
376 | 376 |
377 static bool widthMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatureP
refix op, const MediaValues& mediaValues) | 377 static bool widthMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatureP
refix op, const MediaValues& mediaValues) |
378 { | 378 { |
379 int width = mediaValues.viewportWidth(); | 379 float width = mediaValues.viewportWidth(); |
380 if (value.isValid()) { | 380 if (value.isValid()) { |
381 int length; | 381 float length; |
382 return computeLength(value, mediaValues, length) && compareValue(width,
length, op); | 382 return computeLength(value, mediaValues, length) && compareValue(width,
length, op); |
383 } | 383 } |
384 | 384 |
385 return width; | 385 return width; |
386 } | 386 } |
387 | 387 |
388 // Rest of the functions are trampolines which set the prefix according to the m
edia feature expression used. | 388 // Rest of the functions are trampolines which set the prefix according to the m
edia feature expression used. |
389 | 389 |
390 static bool minColorMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatu
rePrefix, const MediaValues& mediaValues) | 390 static bool minColorMediaFeatureEval(const MediaQueryExpValue& value, MediaFeatu
rePrefix, const MediaValues& mediaValues) |
391 { | 391 { |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
653 // Call the media feature evaluation function. Assume no prefix and let | 653 // Call the media feature evaluation function. Assume no prefix and let |
654 // trampoline functions override the prefix if prefix is used. | 654 // trampoline functions override the prefix if prefix is used. |
655 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); | 655 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); |
656 if (func) | 656 if (func) |
657 return func(expr->expValue(), NoPrefix, *m_mediaValues); | 657 return func(expr->expValue(), NoPrefix, *m_mediaValues); |
658 | 658 |
659 return false; | 659 return false; |
660 } | 660 } |
661 | 661 |
662 } // namespace | 662 } // namespace |
OLD | NEW |