Bug 648484, part 7: Implement a very basic shadow container layer for D3D10, only enough to support the upcoming WindowLayer. r=Bas

This commit is contained in:
Chris Jones 2011-07-13 22:43:43 -07:00
parent 7f04c5ba64
commit 18ad2a3d0c
3 changed files with 80 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@ -375,5 +375,55 @@ ContainerLayerD3D10::Validate()
}
}
ShadowContainerLayerD3D10::ShadowContainerLayerD3D10(LayerManagerD3D10 *aManager)
: ShadowContainerLayer(aManager, NULL)
, LayerD3D10(aManager)
{
mImplData = static_cast<LayerD3D10*>(this);
}
ShadowContainerLayerD3D10::~ShadowContainerLayerD3D10() {}
void
ShadowContainerLayerD3D10::InsertAfter(Layer* aChild, Layer* aAfter)
{
mFirstChild = aChild;
}
void
ShadowContainerLayerD3D10::RemoveChild(Layer* aChild)
{
}
void
ShadowContainerLayerD3D10::ComputeEffectiveTransforms(const gfx3DMatrix& aTransformToSurface)
{
DefaultComputeEffectiveTransforms(aTransformToSurface);
}
LayerD3D10*
ShadowContainerLayerD3D10::GetFirstChildD3D10()
{
return static_cast<LayerD3D10*>(mFirstChild->ImplData());
}
void
ShadowContainerLayerD3D10::RenderLayer()
{
LayerD3D10* layerToRender = GetFirstChildD3D10();
layerToRender->RenderLayer();
}
void
ShadowContainerLayerD3D10::Validate()
{
}
void
ShadowContainerLayerD3D10::LayerManagerDestroyed()
{
}
} /* layers */
} /* mozilla */

View File

@ -1,4 +1,4 @@
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@ -73,6 +73,33 @@ public:
}
};
// This is a bare-bones implementation of a container layer, only
// enough to contain a shadow "window texture". This impl doesn't
// honor the transform/cliprect/etc. when rendering.
class ShadowContainerLayerD3D10 : public ShadowContainerLayer,
public LayerD3D10
{
public:
ShadowContainerLayerD3D10(LayerManagerD3D10 *aManager);
~ShadowContainerLayerD3D10();
void InsertAfter(Layer* aChild, Layer* aAfter);
void RemoveChild(Layer* aChild);
virtual void ComputeEffectiveTransforms(const gfx3DMatrix& aTransformToSurface);
/* LayerD3D10 implementation */
virtual LayerD3D10 *GetFirstChildD3D10();
virtual Layer* GetLayer() { return this; }
virtual void RenderLayer();
virtual void Validate();
virtual void LayerManagerDestroyed();
private:
};
} /* layers */
} /* mozilla */

View File

@ -38,6 +38,7 @@
#ifndef GFX_LAYERMANAGERD3D10_H
#define GFX_LAYERMANAGERD3D10_H
#include "mozilla/layers/ShadowLayers.h"
#include "Layers.h"
#include <windows.h>