Changes to bring clipping inline with upcoming CSS2 errata

git-svn-id: svn://10.0.0.236/trunk@66887 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
troy%netscape.com
2000-04-23 00:56:16 +00:00
parent 8ca11b539e
commit e90db6dfb9
39 changed files with 432 additions and 328 deletions

View File

@@ -88,14 +88,12 @@ public:
* @param aParent intended parent for view. this is not actually set in the
* nsIView through this method. it is only used by the initialization
* code to walk up the view tree, if necessary, to find resources.
* @param aCilpRect initial clip rect of view
* @param aVisibilityFlag initial visibility state of view
* @result The result of the initialization, NS_OK if no errors
*/
NS_IMETHOD Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip = nsnull,
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow) = 0;
/**

View File

@@ -103,10 +103,9 @@ nsrefcnt nsScrollPortView::Release()
NS_IMETHODIMP nsScrollPortView::Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip,
nsViewVisibility aVisibilityFlag)
{
return nsView::Init(aManager, aBounds, aParent, aClip, aVisibilityFlag);
return nsView::Init(aManager, aBounds, aParent, aVisibilityFlag);
}
NS_IMETHODIMP nsScrollPortView::SetDimensions(nscoord width, nscoord height, PRBool aPaint)

View File

@@ -43,7 +43,6 @@ public:
NS_IMETHOD Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip = nsnull,
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
NS_IMETHOD SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE);
NS_IMETHOD SetPosition(nscoord aX, nscoord aY);

View File

@@ -444,7 +444,6 @@ nsrefcnt nsScrollingView::Release()
NS_IMETHODIMP nsScrollingView::Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip,
nsViewVisibility aVisibilityFlag)
{
nsIDeviceContext *dx = nsnull;
@@ -463,7 +462,7 @@ NS_IMETHODIMP nsScrollingView::Init(nsIViewManager* aManager,
NS_RELEASE(dx);
}
return nsView::Init(aManager, aBounds, aParent, aClip, aVisibilityFlag);
return nsView::Init(aManager, aBounds, aParent, aVisibilityFlag);
}
NS_IMETHODIMP nsScrollingView::SetDimensions(nscoord width, nscoord height, PRBool aPaint)
@@ -840,8 +839,7 @@ NS_IMETHODIMP nsScrollingView::CreateScrollControls(nsNativeWidget aNative)
trect.height = NSToCoordRound(sbHeight);
trect.y = mBounds.y + mBounds.YMost() - trect.height;
rv = mCornerView->Init(mViewManager, trect, this,
nsnull, nsViewVisibility_kHide);
rv = mCornerView->Init(mViewManager, trect, this, nsViewVisibility_kHide);
mViewManager->InsertChild(this, mCornerView, mZindex);
mCornerView->CreateWidget(kWidgetCID, &initData,
mWindow ? nsnull : aNative);

View File

@@ -45,7 +45,6 @@ public:
NS_IMETHOD Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip = nsnull,
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
NS_IMETHOD SetDimensions(nscoord width, nscoord height, PRBool aPaint = PR_TRUE);
NS_IMETHOD SetPosition(nscoord aX, nscoord aY);

View File

@@ -210,7 +210,6 @@ nsIView* nsView::GetViewFor(nsIWidget* aWidget)
NS_IMETHODIMP nsView :: Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip,
nsViewVisibility aVisibilityFlag)
{
//printf(" \n callback=%d data=%d", aWidgetCreateCallback, aCallbackData);
@@ -224,15 +223,10 @@ NS_IMETHODIMP nsView :: Init(nsIViewManager* aManager,
// we don't hold a reference to the view manager
mViewManager = aManager;
if (aClip != nsnull)
mClip = *aClip;
else
{
mClip.mLeft = 0;
mClip.mRight = 0;
mClip.mTop = 0;
mClip.mBottom = 0;
}
mChildClip.mLeft = 0;
mChildClip.mRight = 0;
mChildClip.mTop = 0;
mChildClip.mBottom = 0;
SetBounds(aBounds);
@@ -273,18 +267,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
if (nsnull != mClientData) {
nsCOMPtr<nsIViewObserver> observer;
if (NS_OK == mViewManager->GetViewObserver(*getter_AddRefs(observer))) {
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom)) {
nsRect crect;
crect.x = mClip.mLeft;
crect.y = mClip.mTop;
crect.width = mClip.mRight - mClip.mLeft;
crect.height = mClip.mBottom - mClip.mTop;
rc.SetClipRect(crect, nsClipCombine_kIntersect, aResult);
if (!aResult)
observer->Paint((nsIView *)this, rc, rect);
} else {
observer->Paint((nsIView *)this, rc, rect);
}
observer->Paint((nsIView *)this, rc, rect);
}
}
} else {
@@ -308,11 +291,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
{
nsRect brect;
GetBounds(brect);
// what does this test mean?
if ((mClip.mLeft == mClip.mRight) || (mClip.mTop == mClip.mBottom) && (this != pRoot)) {
rc.SetClipRect(brect, nsClipCombine_kIntersect, clipres);
}
rc.SetClipRect(brect, nsClipCombine_kIntersect, clipres);
}
}
@@ -580,12 +559,6 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
if (nsnull != mClientData) {
nsCOMPtr<nsIViewObserver> observer;
if (NS_OK == mViewManager->GetViewObserver(*getter_AddRefs(observer))) {
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom)) {
nsRect crect(mClip.mLeft, mClip.mTop,
mClip.mRight - mClip.mLeft,
mClip.mBottom - mClip.mTop);
localcx->SetClipRect(crect, nsClipCombine_kIntersect, clipres);
}
observer->Paint((nsIView *)this, *localcx, rect);
}
}
@@ -696,17 +669,7 @@ NS_IMETHODIMP nsView :: Paint(nsIRenderingContext& rc, const nsRect& rect,
nsRect brect;
GetBounds(brect);
if ((mClip.mLeft != mClip.mRight) && (mClip.mTop != mClip.mBottom))
{
nsRect crect;
crect.x = mClip.mLeft + brect.x;
crect.y = mClip.mTop + brect.y;
crect.width = mClip.mRight - mClip.mLeft;
crect.height = mClip.mBottom - mClip.mTop;
rc.SetClipRect(crect, nsClipCombine_kSubtract, clipres);
} else if (this != pRoot)
if (this != pRoot)
rc.SetClipRect(brect, nsClipCombine_kSubtract, clipres);
}
@@ -1049,20 +1012,20 @@ NS_IMETHODIMP nsView :: GetBounds(nsRect &aBounds) const
NS_IMETHODIMP nsView :: SetChildClip(nscoord aLeft, nscoord aTop, nscoord aRight, nscoord aBottom)
{
NS_PRECONDITION(aLeft <= aRight && aTop <= aBottom, "bad clip values");
mClip.mLeft = aLeft;
mClip.mTop = aTop;
mClip.mRight = aRight;
mClip.mBottom = aBottom;
mChildClip.mLeft = aLeft;
mChildClip.mTop = aTop;
mChildClip.mRight = aRight;
mChildClip.mBottom = aBottom;
return NS_OK;
}
NS_IMETHODIMP nsView :: GetChildClip(nscoord *aLeft, nscoord *aTop, nscoord *aRight, nscoord *aBottom) const
{
*aLeft = mClip.mLeft;
*aTop = mClip.mTop;
*aRight = mClip.mRight;
*aBottom = mClip.mBottom;
*aLeft = mChildClip.mLeft;
*aTop = mChildClip.mTop;
*aRight = mChildClip.mRight;
*aBottom = mChildClip.mBottom;
return NS_OK;
}

View File

@@ -49,7 +49,6 @@ public:
NS_IMETHOD Init(nsIViewManager* aManager,
const nsRect &aBounds,
const nsIView *aParent,
const nsViewClip *aClip = nsnull,
nsViewVisibility aVisibilityFlag = nsViewVisibility_kShow);
NS_IMETHOD Destroy();
@@ -145,7 +144,7 @@ protected:
nsViewVisibility mVis;
PRInt32 mNumKids;
nsRect mBounds;
nsViewClip mClip;
nsViewClip mChildClip;
nsTransform2D *mXForm;
float mOpacity;
PRUint32 mVFlags;