blob: bb1e6f767905f74a4519c8df1e3a43133956b5b9 [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_INTERNAL_H_
#define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_INTERNAL_H_
#include "flutter/shell/platform/windows/public/flutter_windows.h"
#if defined(__cplusplus)
extern "C" {
#endif
// Declare functions that are currently in-progress and shall be exposed to the
// public facing API upon completion.
// Properties for configuring a Flutter view controller.
typedef struct {
// The view's initial width.
int width;
// The view's initial height.
int height;
} FlutterDesktopViewControllerProperties;
// Creates a view for the given engine.
//
// The |engine| will be started if it is not already running.
//
// The caller owns the returned reference, and is responsible for calling
// |FlutterDesktopViewControllerDestroy|. Returns a null pointer in the event of
// an error.
//
// Unlike |FlutterDesktopViewControllerCreate|, this does *not* take ownership
// of |engine| and |FlutterDesktopEngineDestroy| must be called to destroy
// the engine.
FLUTTER_EXPORT FlutterDesktopViewControllerRef
FlutterDesktopEngineCreateViewController(
FlutterDesktopEngineRef engine,
const FlutterDesktopViewControllerProperties* properties);
typedef int64_t PlatformViewId;
typedef struct {
size_t struct_size;
HWND parent_window;
const char* platform_view_type;
// user_data may hold any necessary additional information for creating a new
// platform view. For example, an instance of FlutterWindow.
void* user_data;
PlatformViewId platform_view_id;
} FlutterPlatformViewCreationParameters;
typedef HWND (*FlutterPlatformViewFactory)(
const FlutterPlatformViewCreationParameters*);
typedef struct {
size_t struct_size;
FlutterPlatformViewFactory factory;
void* user_data; // Arbitrary user data supplied to the creation struct.
} FlutterPlatformViewTypeEntry;
FLUTTER_EXPORT void FlutterDesktopEngineRegisterPlatformViewType(
FlutterDesktopEngineRef engine,
const char* view_type_name,
FlutterPlatformViewTypeEntry view_type);
#if defined(__cplusplus)
}
#endif
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_WINDOWS_INTERNAL_H_