ScissorRenderState* ScissorRenderState::Current()
{
	IRender& render = Render::Instance();
	ScissorRenderState* state = new ScissorRenderState();

	state->Enable(render.GetBoolean(GraphicsBooleanName::ScissorTest));

	Rect2I scissorBox;
	render.GetIntegerArray(GraphicsIntegerArrayName::ScissorBox, scissorBox.GetBuffer());
	state->SetScissorBox(Rect2F(scissorBox.Origin.X, scissorBox.Origin.Y, scissorBox.Size.Width, scissorBox.Size.Height));

	return state;
}
Exemple #2
0
Rect2F SkeletonSlot::CalculateBoundingBox()
{
	if (mAttachment != nullptr&&mAttachment->Type() == SkeletonAttachmentType::BoundingBox)
	{
		SkeletonBoundingBoxAttachmentModel* boundingBox = (SkeletonBoundingBoxAttachmentModel*)mAttachment;


		const List<Point2F>& vertices = boundingBox->Polygon().Vertices();

		RangeF rangeX;
		RangeF rangeY;
		for(auto pos: vertices)
		{
			pos = TransformToWorld(pos);
			rangeX.Expand(pos.X);
			rangeY.Expand(pos.Y);
		}

		return Rect2F(rangeX.Min, rangeY.Min, rangeX.Length(), rangeY.Length());
	}
	return Rect2F::Zero;
}

	NormalLayer* normalLayer = new NormalLayer();
	float winWidth = ResolutionAdapter::Instance().WinWidth();
	float winHeight = ResolutionAdapter::Instance().WinHeight();

	//back ground
	FOR_EACH_UINT32(i, mChildCount)
	{
		Sprite* child = NodeFactory::Instance().CreateSprite(FileIdRef("Background.jpg", i));
		child->SetPositionX(winWidth*i);
		normalLayer->AddChild(child);
	}
	//foreground
	mComponent = ComponentFactory::Instance().Create<ParallaxScrollComponent>();
	mComponent->Initialize(Rect2F(Point2F::Zero, Size2F(winWidth*mChildCount, winHeight)), ResolutionAdapter::Instance().WinRect(), ScrollDirection::HorizontalFromLeft, true);

	Sprite* mainSprite = NodeFactory::Instance().CreateSprite("test2.png");
	mainSprite->DockToScreen(DockPoint::MiddleTop);
	mainSprite->SetAnchorPoint(AnchorPoint::MiddleTop);
	normalLayer->AddChild(mainSprite);

	FOR_EACH_SIZE(i, mChildCount)
	{
		Sprite* child = NodeFactory::Instance().CreateSprite("test2.png");
		child->SetAnchorPoint(AnchorPoint::MiddleTop);
		child->SetPosition(mainSprite->Position());
		child->MoveY(-child->Height()*(i + 1));
		normalLayer->AddChild(child);
		Point3F ratio = Point3F::One;
		ratio.X = (float)(mChildCount-i) / mChildCount;
void IScrollMathModel::Initialize(const Size2F& containerSize, const Rect2F& window)
{
	Initialize(Rect2F(Point2F::Zero, containerSize), window);
}
Exemple #5
0
void ILayoutable::UpdateLayout(const Size2F& availableSize/*=Size2F::Zero*/)
{
	Measure(availableSize);
	ArrangeRecursively(Rect2F(Point2F::Zero,mMeasuredSize));
	
}
Rect2F ProgressBarNode::GetBoundingBox()
{
	CCSize size= this->getContentSize();
	return Rect2F(0.f,0.f,size.width,size.height);
}
Exemple #7
0
void ScrollPanel::OnUpdateScrollBar()
{


	{
		bool isShowHorizontal = false;
		switch (mHorizontalScrollBarVisibility)
		{
			case ScrollBarVisibility::Disabled:
				if (mHorizontalScrollBar != nullptr)
				{
					DeleteChild(mHorizontalScrollBar);
					mHorizontalScrollBar = nullptr;
				}
				break;
			case ScrollBarVisibility::VisibleIfNeed:
			case ScrollBarVisibility::Auto:
				isShowHorizontal = mScrollModel->NeedHorizontalScrollBar();
				if (!isShowHorizontal&&mHorizontalScrollBar != nullptr&&mHorizontalScrollBar->IsVisible())
				{
					mHorizontalScrollBar->StopAllActions();
					mHorizontalScrollBar->SetVisible(false);
				}
				break;
			case ScrollBarVisibility::AlwaysVisible:
				isShowHorizontal = true;
				break;
			default:
				break;
		}

		if (isShowHorizontal)
		{
			float offset = mScrollModel->HorizontalScrollBarOffset();
			float scrollBarWidth = mScrollModel->HorizontalScrollBarWidth();

			if (mHorizontalScrollBar == nullptr)
			{
				mHorizontalScrollBar = (INode*)NodeFactory::Instance().CreateRect( Rect2F(0, 0, 1, mHorizontalScrollBarHeight), mScrollBarColor);
				mHorizontalScrollBar->SetName(MEDUSA_PREFIX(HorizontalScrollBar));
				mHorizontalScrollBar->SetPosition(Point3F::Zero);
				mHorizontalScrollBar->EnableManaged();

				AddChild(mHorizontalScrollBar);
			}


			mHorizontalScrollBar->SetSize(1, mHorizontalScrollBarHeight);
			mHorizontalScrollBar->SetScaleX(scrollBarWidth);
			mHorizontalScrollBar->SetPositionX(offset);
			mHorizontalScrollBar->SetPositionY(0.f);

			if (mVerticalScrollBarVisibility == ScrollBarVisibility::Auto)
			{
				IScrollMathModel::ScrollState state = mScrollModel->State();

				switch (state)
				{
					case IScrollMathModel::ScrollState::None:
						mHorizontalScrollBar->SetOpacity(0.f);
						break;
					case IScrollMathModel::ScrollState::Begin:
						break;
					case IScrollMathModel::ScrollState::StaticScroll:
					case IScrollMathModel::ScrollState::Scrolling:
					case IScrollMathModel::ScrollState::Spring:
						if (Math::IsZero(mHorizontalScrollBar->Opacity()))
						{
							mHorizontalScrollBar->StopAllActions();
							mHorizontalScrollBar->RunAction(new FadeBySpeedAction(mScrollBarOpacityFadeSpeed));
						}
						break;
					case IScrollMathModel::ScrollState::End:
						mHorizontalScrollBar->StopAllActions();
						mHorizontalScrollBar->RunAction(new FadeBySpeedAction(-mScrollBarOpacityFadeSpeed));
						break;
					default:
						break;
				}
			}
		}
	}

	{
		//vertical
		bool isShowVertical = false;
		switch (mVerticalScrollBarVisibility)
		{
			case ScrollBarVisibility::Disabled:
				if (mVerticalScrollBar != nullptr)
				{
					DeleteChild(mVerticalScrollBar);
					mVerticalScrollBar = nullptr;
				}
				break;
			case ScrollBarVisibility::VisibleIfNeed:
			case ScrollBarVisibility::Auto:
				isShowVertical = mScrollModel->NeedVerticalScrollBar();
				if (!isShowVertical&&mVerticalScrollBar != nullptr&&mVerticalScrollBar->IsVisible())
				{
					mVerticalScrollBar->StopAllActions();
					mVerticalScrollBar->SetVisible(false);
				}
				break;
			case ScrollBarVisibility::AlwaysVisible:
				isShowVertical = true;
				break;
			default:
				break;
		}

		if (isShowVertical)
		{
			float offset = mScrollModel->VerticalScrollBarOffset();
			float scrollBarHeight = mScrollModel->VerticalScrollBarHeight();

			if (mVerticalScrollBar == nullptr)
			{
				mVerticalScrollBar = (INode*)NodeFactory::Instance().CreateRect(Rect2F(0, 0, mVerticalScrollBarWidth, 1), mScrollBarColor);
				mVerticalScrollBar->SetName(MEDUSA_PREFIX(VerticalScrollBar));
				mVerticalScrollBar->SetPosition(Point3F::Zero);
				mVerticalScrollBar->SetPositionX(mSize.Width - mVerticalScrollBarWidth);
				mVerticalScrollBar->EnableManaged();

				AddChild(mVerticalScrollBar);
			}


			mVerticalScrollBar->SetSize(mVerticalScrollBarWidth, 1);
			mVerticalScrollBar->SetScaleY(scrollBarHeight);
			mVerticalScrollBar->SetPositionX(mSize.Width - mVerticalScrollBarWidth);
			mVerticalScrollBar->SetPositionY(offset);

			if (mVerticalScrollBarVisibility == ScrollBarVisibility::Auto)
			{
				IScrollMathModel::ScrollState state = mScrollModel->State();

				switch (state)
				{
					case IScrollMathModel::ScrollState::None:
						mVerticalScrollBar->SetOpacity(0.f);
						break;
					case IScrollMathModel::ScrollState::Begin:
						break;
					case IScrollMathModel::ScrollState::StaticScroll:
					case IScrollMathModel::ScrollState::Scrolling:
					case IScrollMathModel::ScrollState::Spring:
						if (Math::IsZero(mVerticalScrollBar->Opacity()))
						{
							mVerticalScrollBar->StopAllActions();
							mVerticalScrollBar->RunAction(new FadeBySpeedAction(mScrollBarOpacityFadeSpeed));
						}
						break;
					case IScrollMathModel::ScrollState::End:
						mVerticalScrollBar->StopAllActions();
						mVerticalScrollBar->RunAction(new FadeBySpeedAction(-mScrollBarOpacityFadeSpeed));
						break;
					default:
						break;
				}
			}

		}

	}


}