blob: 8bf8b559d552034fdab46ff05c1709b676d74019 [file] [log] [blame]
// Copyright 2018 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 CHROME_BROWSER_VR_ELEMENTS_RESIZER_H_
#define CHROME_BROWSER_VR_ELEMENTS_RESIZER_H_
#include <sstream>
#include "chrome/browser/vr/elements/ui_element.h"
#include "chrome/browser/vr/vr_ui_export.h"
#include "ui/gfx/geometry/transform.h"
namespace vr {
// When enabled, a resizer scales its descendant elements in response to
// trackpad use.
class VR_UI_EXPORT Resizer : public UiElement {
public:
Resizer();
Resizer(const Resizer&) = delete;
Resizer& operator=(const Resizer&) = delete;
~Resizer() override;
void set_touch_position(const gfx::PointF& position) {
touchpad_position_ = position;
}
void SetTouchingTouchpad(bool touching);
void SetEnabled(bool enabled);
void Reset();
#ifndef NDEBUG
void DumpGeometry(std::ostringstream* os) const override;
#endif
bool ShouldUpdateWorldSpaceTransform(
bool parent_transform_changed) const override;
private:
gfx::Transform LocalTransform() const override;
gfx::Transform GetTargetLocalTransform() const override;
void UpdateTransform(const gfx::Transform& head_pose);
bool OnBeginFrame(const gfx::Transform& head_pose) override;
bool enabled_ = false;
// Initialized via constants.
float t_;
float initial_t_;
gfx::Transform transform_;
gfx::PointF touchpad_position_;
gfx::PointF initial_touchpad_position_;
};
} // namespace vr
#endif // CHROME_BROWSER_VR_ELEMENTS_RESIZER_H_