blob: f3255d9e18d8452f7d2a5142ae6184da7fd273be [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_
#define BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_
#include "base/android/jni_android.h"
#include "base/macros.h"
#include "blimp/client/compositor/blimp_compositor.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/native_widget_types.h"
namespace base {
class SingleThreadTaskRunner;
class Thread;
}
namespace cc {
class LayerTreeHost;
}
namespace blimp {
// An Android specific version of the BlimpCompositor. This class builds a
// gfx::AcceleratedWidget out of an Android SurfaceView's surface.
class BlimpCompositorAndroid : public BlimpCompositor {
public:
// |real_size| is the total display area including system decorations (see
// android.view.Display.getRealSize()). |size| is the total display
// area not including system decorations (see android.view.Display.getSize()).
// |dp_to_px| is the scale factor that is required to convert from dp device
// pixels) to px.
static scoped_ptr<BlimpCompositorAndroid> Create(const gfx::Size& real_size,
const gfx::Size& size,
float dp_to_px);
~BlimpCompositorAndroid() override;
protected:
// |size| is the size of the display. |real_size_supported| determines
// whether or not this size is the real display size or the display size
// not including the system decorations. |dp_to_px| is the scale factor that
// is required to convert from dp (device pixels) to px.
BlimpCompositorAndroid(const gfx::Size& size,
bool real_size_supported,
float dp_to_px);
// BlimpCompositor implementation.
void GenerateLayerTreeSettings(cc::LayerTreeSettings* settings);
private:
// Used to determine tile size for the compositor's rastered tiles. For a
// device of width X height |portrait_width_| will be min(width, height) and
// |landscape_width_| will be max(width, height).
int portrait_width_;
int landscape_width_;
// True if the |portrait_width_| and |landscape_width_| represent the device's
// physical dimensions, including any area occupied by system decorations.
bool real_size_supported_;
DISALLOW_COPY_AND_ASSIGN(BlimpCompositorAndroid);
};
} // namespace blimp
#endif // BLIMP_CLIENT_COMPOSITOR_BLIMP_COMPOSITOR_ANDROID_H_