MCPcopy Create free account
hub / github.com/SpartanJ/eepp / calcDrawableSize

Method calcDrawableSize

src/eepp/ui/uinodedrawable.cpp:500–570  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

498}
499
500Sizef UINodeDrawable::LayerDrawable::calcDrawableSize( const std::string& drawableSizeEq ) {
501 Sizef size;
502
503 if ( NULL == mDrawable )
504 return Sizef::Zero;
505
506 if ( drawableSizeEq == "auto" ) {
507 if ( mDrawable->getDrawableType() == Drawable::RECTANGLE ) {
508 size = mSize;
509 } else {
510 size = mDrawable->getPixelsSize();
511 }
512 } else if ( drawableSizeEq == "expand" ) {
513 size = mSize;
514 } else if ( drawableSizeEq == "contain" ) {
515 Sizef drawableSize( mDrawable->getSize() );
516 Float Scale1 = mSize.getWidth() / drawableSize.getWidth();
517 Float Scale2 = mSize.getHeight() / drawableSize.getHeight();
518 if ( Scale1 < 1 || Scale2 < 1 ) {
519 Scale1 = eemin( Scale1, Scale2 );
520 size = Sizef( drawableSize.getWidth() * Scale1, drawableSize.getHeight() * Scale1 );
521 } else {
522 size = drawableSize;
523 }
524 } else if ( drawableSizeEq == "cover" ) {
525 Sizef drawableSize( mDrawable->getSize() );
526 Float Scale1 = mSize.getWidth() / drawableSize.getWidth();
527 Float Scale2 = mSize.getHeight() / drawableSize.getHeight();
528 Scale1 = eemax( Scale1, Scale2 );
529 size = Sizef( drawableSize.getWidth() * Scale1, drawableSize.getHeight() * Scale1 );
530 } else {
531 std::vector<std::string> sizePart = String::split( drawableSizeEq, ' ' );
532
533 if ( sizePart.size() == 1 ) {
534 sizePart.push_back( "auto" );
535 }
536
537 if ( sizePart.size() == 2 ) {
538 if ( sizePart[0] == "auto" && sizePart[1] == "auto" ) {
539 if ( mDrawable->getDrawableType() == Drawable::RECTANGLE ) {
540 size = mSize;
541 } else {
542 size = mDrawable->getSize();
543 }
544 } else if ( sizePart[0] != "auto" ) {
545 CSS::StyleSheetLength wl( sizePart[0] );
546 size.x = mContainer->getOwner()->convertLength(
547 wl, mContainer->getOwner()->getPixelsSize().getWidth() );
548
549 if ( sizePart[1] == "auto" ) {
550 Sizef drawableSize( mDrawable->getSize() );
551 size.y =
552 drawableSize.getHeight() * ( size.getWidth() / drawableSize.getWidth() );
553 } else {
554 CSS::StyleSheetLength hl( sizePart[1] );
555 size.y = mContainer->getOwner()->convertLength(
556 hl, mContainer->getOwner()->getPixelsSize().getHeight() );
557 }

Callers 1

tweenPropertyMethod · 0.80

Calls 11

eeminFunction · 0.85
eemaxFunction · 0.85
getDrawableTypeMethod · 0.80
push_backMethod · 0.80
convertLengthMethod · 0.80
getOwnerMethod · 0.80
getPixelsSizeMethod · 0.45
getSizeMethod · 0.45
getWidthMethod · 0.45
getHeightMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected