gecko/gfx/layers/LayersLogging.cpp
Blair McBride 3b0373f215 Backed out 9 changesets (bug 987311, bug 989027, bug 989144). r=sheriff
Backed out changeset 046c061d91c2 (bug 989144)
Backed out changeset 3f1b41adeaef (bug 987311)
Backed out changeset 8d5a171564bd (bug 987311)
Backed out changeset dcc0d016de7a (bug 987311)
Backed out changeset 27f338fbc835 (bug 989027)
Backed out changeset 4a67f5144ea4 (bug 989027)
Backed out changeset 62ba0a377450 (bug 987311)
Backed out changeset 6a2542a5c865 (bug 987311)
Backed out changeset 1dfd9a457f34 (bug 987311)
2014-04-27 19:45:08 +12:00

230 lines
5.9 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* vim: sw=2 ts=8 et :
*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "LayersLogging.h"
#include <stdint.h> // for uint8_t
#include "gfx3DMatrix.h" // for gfx3DMatrix
#include "gfxColor.h" // for gfxRGBA
#include "mozilla/gfx/Matrix.h" // for Matrix4x4, Matrix
#include "nsDebug.h" // for NS_ERROR
#include "nsPoint.h" // for nsIntPoint
#include "nsRect.h" // for nsIntRect
#include "nsSize.h" // for nsIntSize
using namespace mozilla::gfx;
namespace mozilla {
namespace layers {
nsACString&
AppendToString(nsACString& s, const void* p,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString("%p", p);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const GraphicsFilter& f,
const char* pfx, const char* sfx)
{
s += pfx;
switch (f) {
case GraphicsFilter::FILTER_FAST: s += "fast"; break;
case GraphicsFilter::FILTER_GOOD: s += "good"; break;
case GraphicsFilter::FILTER_BEST: s += "best"; break;
case GraphicsFilter::FILTER_NEAREST: s += "nearest"; break;
case GraphicsFilter::FILTER_BILINEAR: s += "bilinear"; break;
case GraphicsFilter::FILTER_GAUSSIAN: s += "gaussian"; break;
default:
NS_ERROR("unknown filter type");
s += "???";
}
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, FrameMetrics::ViewID n,
const char* pfx, const char* sfx)
{
s += pfx;
s.AppendInt(n);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const gfxRGBA& c,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString(
"rgba(%d, %d, %d, %g)",
uint8_t(c.r*255.0), uint8_t(c.g*255.0), uint8_t(c.b*255.0), c.a);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const nsIntPoint& p,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString("(x=%d, y=%d)", p.x, p.y);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const nsIntRect& r,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString(
"(x=%d, y=%d, w=%d, h=%d)",
r.x, r.y, r.width, r.height);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const nsIntRegion& r,
const char* pfx, const char* sfx)
{
s += pfx;
nsIntRegionRectIterator it(r);
s += "< ";
while (const nsIntRect* sr = it.Next())
AppendToString(s, *sr) += "; ";
s += ">";
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const nsIntSize& sz,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString("(w=%d, h=%d)", sz.width, sz.height);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const FrameMetrics& m,
const char* pfx, const char* sfx)
{
s += pfx;
AppendToString(s, m.mViewport, "{ viewport=");
AppendToString(s, m.GetScrollOffset(), " viewportScroll=");
AppendToString(s, m.mDisplayPort, " displayport=");
AppendToString(s, m.mScrollableRect, " scrollableRect=");
AppendToString(s, m.GetScrollId(), " scrollId=", " }");
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const IntSize& size,
const char* pfx, const char* sfx)
{
s += pfx;
s += nsPrintfCString(
"(width=%d, height=%d)",
size.width, size.height);
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const Matrix4x4& m,
const char* pfx, const char* sfx)
{
s += pfx;
if (m.Is2D()) {
Matrix matrix = m.As2D();
if (matrix.IsIdentity()) {
s += "[ I ]";
return s += sfx;
}
s += nsPrintfCString(
"[ %g %g; %g %g; %g %g; ]",
matrix._11, matrix._12, matrix._21, matrix._22, matrix._31, matrix._32);
} else {
s += nsPrintfCString(
"[ %g %g %g %g; %g %g %g %g; %g %g %g %g; %g %g %g %g; ]",
m._11, m._12, m._13, m._14,
m._21, m._22, m._23, m._24,
m._31, m._32, m._33, m._34,
m._41, m._42, m._43, m._44);
}
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, const Filter filter,
const char* pfx, const char* sfx)
{
s += pfx;
switch (filter) {
case Filter::GOOD: s += "Filter::GOOD"; break;
case Filter::LINEAR: s += "Filter::LINEAR"; break;
case Filter::POINT: s += "Filter::POINT"; break;
}
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, TextureFlags flags,
const char* pfx, const char* sfx)
{
s += pfx;
if (!flags) {
s += "NoFlags";
} else {
#define AppendFlag(test) \
{ \
if (flags & test) { \
if (previous) { \
s += "|"; \
} \
s += #test; \
previous = true; \
} \
}
bool previous = false;
AppendFlag(TEXTURE_USE_NEAREST_FILTER);
AppendFlag(TEXTURE_NEEDS_Y_FLIP);
AppendFlag(TEXTURE_DISALLOW_BIGIMAGE);
AppendFlag(TEXTURE_ALLOW_REPEAT);
AppendFlag(TEXTURE_NEW_TILE);
#undef AppendFlag
}
return s += sfx;
}
nsACString&
AppendToString(nsACString& s, mozilla::gfx::SurfaceFormat format,
const char* pfx, const char* sfx)
{
s += pfx;
switch (format) {
case SurfaceFormat::B8G8R8A8: s += "SurfaceFormat::B8G8R8A8"; break;
case SurfaceFormat::B8G8R8X8: s += "SurfaceFormat::B8G8R8X8"; break;
case SurfaceFormat::R8G8B8A8: s += "SurfaceFormat::R8G8B8A8"; break;
case SurfaceFormat::R8G8B8X8: s += "SurfaceFormat::R8G8B8X8"; break;
case SurfaceFormat::R5G6B5: s += "SurfaceFormat::R5G6B5"; break;
case SurfaceFormat::A8: s += "SurfaceFormat::A8"; break;
case SurfaceFormat::YUV: s += "SurfaceFormat::YUV"; break;
case SurfaceFormat::UNKNOWN: s += "SurfaceFormat::UNKNOWN"; break;
}
return s += sfx;
}
} // namespace
} // namespace