| Index: ui/ozone/platform/caca/caca_window.h
|
| diff --git a/ui/ozone/platform/caca/caca_window.h b/ui/ozone/platform/caca/caca_window.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..577c415ca52ee2a3d147f22453455f22fbe1514f
|
| --- /dev/null
|
| +++ b/ui/ozone/platform/caca/caca_window.h
|
| @@ -0,0 +1,95 @@
|
| +// Copyright 2014 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 UI_OZONE_PLATFORM_CACA_CACA_WINDOW_H_
|
| +#define UI_OZONE_PLATFORM_CACA_CACA_WINDOW_H_
|
| +
|
| +#include <caca.h>
|
| +
|
| +#include "base/debug/stack_trace.h"
|
| +#include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "ui/events/platform/platform_event_dispatcher.h"
|
| +#include "ui/gfx/geometry/size.h"
|
| +#include "ui/gfx/native_widget_types.h"
|
| +#include "ui/ozone/platform/caca/scoped_caca_types.h"
|
| +#include "ui/platform_window/platform_window.h"
|
| +
|
| +namespace ui {
|
| +
|
| +class CacaEventFactory;
|
| +class CacaWindowManager;
|
| +class PlatformWindowDelegate;
|
| +
|
| +// Basic initialization of Libcaca. This needs to be shared between SFO and EFO
|
| +// since both need the |display_| to draw and process events respectively.
|
| +// Note, |canvas_| needs to be here since it is needed for creating a
|
| +// |display_|.
|
| +class CacaWindow : public PlatformWindow, public PlatformEventDispatcher {
|
| + public:
|
| + CacaWindow(PlatformWindowDelegate* delegate,
|
| + CacaWindowManager* manager,
|
| + CacaEventFactory* event_factory,
|
| + const gfx::Rect& bounds);
|
| + virtual ~CacaWindow();
|
| +
|
| + bool Initialize();
|
| +
|
| + // Handlers for events received from libcaca.
|
| + void OnCacaQuit();
|
| + void OnCacaResize();
|
| + void OnCacaEvent(ui::Event* event);
|
| +
|
| + // This is the Caca canvas size.
|
| + gfx::Size physical_size() const { return physical_size_; }
|
| + gfx::Size bitmap_size() const { return bitmap_size_; }
|
| + caca_display_t* display() const { return display_.get(); }
|
| +
|
| + // PlatformWindow:
|
| + virtual gfx::Rect GetBounds() OVERRIDE;
|
| + virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
|
| + virtual void Show() OVERRIDE;
|
| + virtual void Hide() OVERRIDE;
|
| + virtual void Close() OVERRIDE;
|
| + virtual void SetCapture() OVERRIDE;
|
| + virtual void ReleaseCapture() OVERRIDE;
|
| + virtual void ToggleFullscreen() OVERRIDE;
|
| + virtual void Maximize() OVERRIDE;
|
| + virtual void Minimize() OVERRIDE;
|
| + virtual void Restore() OVERRIDE;
|
| +
|
| + // PlatformEventDispatcher:
|
| + virtual bool CanDispatchEvent(const PlatformEvent& event) OVERRIDE;
|
| + virtual uint32_t DispatchEvent(const PlatformEvent& event) OVERRIDE;
|
| +
|
| + private:
|
| + // Event polling.
|
| + void TryProcessingEvent();
|
| +
|
| + // Sync sizes with libcaca.
|
| + void UpdateDisplaySize();
|
| +
|
| + PlatformWindowDelegate* delegate_;
|
| + CacaWindowManager* manager_;
|
| + CacaEventFactory* event_factory_;
|
| + gfx::AcceleratedWidget widget_;
|
| +
|
| + ScopedCacaCanvas canvas_;
|
| + ScopedCacaDisplay display_;
|
| +
|
| + // Size of the console in characters. This can be changed by setting
|
| + // CACA_GEOMETRY environment variable.
|
| + gfx::Size physical_size_;
|
| +
|
| + // Size of the backing buffer we draw into. Size in pixels.
|
| + gfx::Size bitmap_size_;
|
| +
|
| + base::WeakPtrFactory<CacaWindow> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(CacaWindow);
|
| +};
|
| +
|
| +} // namespace ui
|
| +
|
| +#endif // UI_OZONE_PLATFORM_CACA_CACA_WINDOW_H_
|
|
|