mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
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:
parent
7f04c5ba64
commit
18ad2a3d0c
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -38,6 +38,7 @@
|
||||
#ifndef GFX_LAYERMANAGERD3D10_H
|
||||
#define GFX_LAYERMANAGERD3D10_H
|
||||
|
||||
#include "mozilla/layers/ShadowLayers.h"
|
||||
#include "Layers.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
Loading…
Reference in New Issue
Block a user