Hidenori Matsubayashi
2022-03-04 09:13:44 +09:00
committed by GitHub
parent 3050096d46
commit fc4efe0ac2
6 changed files with 81 additions and 30 deletions
+1 -1
View File
@@ -1 +1 @@
a83ed0e5e3b9cd2b5e2f07ef31c72f43c55e93b7 bd539267b42051b0da3d16ffa8f48949dce8aa8f
+1 -1
View File
@@ -1 +1 @@
097d3313d8e2c7f901932d63e537c1acefb87800 7e9793dee1b85a243edd0e06cb1658e98b077561
+1 -3
View File
@@ -52,9 +52,7 @@ class ELinuxArtifacts extends CachedArtifacts {
assert(hostPlatform != HostPlatform.linux_arm64, assert(hostPlatform != HostPlatform.linux_arm64,
'Artifact $artifact not available on Linux arm64.'); 'Artifact $artifact not available on Linux arm64.');
return _getEngineArtifactsDirectory(arch, mode!) return _getEngineArtifactsDirectory(arch, mode!)
// TODO(hidenori): Remove this comment out. .childDirectory(getNameForHostPlatform(hostPlatform))
// See: https://github.com/sony/flutter-elinux/issues/81
//.childDirectory(getNameForHostPlatform(hostPlatform))
.childFile('gen_snapshot') .childFile('gen_snapshot')
.path; .path;
} }
+43 -19
View File
@@ -39,30 +39,40 @@ class CommandOptions {
CommandOptions() = default; CommandOptions() = default;
~CommandOptions() = default; ~CommandOptions() = default;
void AddWithoutValue(const std::string& name, const std::string& short_name, void AddWithoutValue(const std::string& name,
const std::string& description, bool required) { const std::string& short_name,
const std::string& description,
bool required) {
Add<std::string, ReaderString>(name, short_name, description, "", Add<std::string, ReaderString>(name, short_name, description, "",
ReaderString(), required, false); ReaderString(), required, false);
} }
void AddInt(const std::string& name, const std::string& short_name, void AddInt(const std::string& name,
const std::string& description, const int& default_value, const std::string& short_name,
const std::string& description,
const int& default_value,
bool required) { bool required) {
Add<int, ReaderInt>(name, short_name, description, default_value, Add<int, ReaderInt>(name, short_name, description, default_value,
ReaderInt(), required, true); ReaderInt(), required, true);
} }
void AddString(const std::string& name, const std::string& short_name, void AddString(const std::string& name,
const std::string& short_name,
const std::string& description, const std::string& description,
const std::string& default_value, bool required) { const std::string& default_value,
bool required) {
Add<std::string, ReaderString>(name, short_name, description, default_value, Add<std::string, ReaderString>(name, short_name, description, default_value,
ReaderString(), required, true); ReaderString(), required, true);
} }
template <typename T, typename F> template <typename T, typename F>
void Add(const std::string& name, const std::string& short_name, void Add(const std::string& name,
const std::string& description, const T default_value, const std::string& short_name,
F reader = F(), bool required = true, bool required_value = true) { const std::string& description,
const T default_value,
F reader = F(),
bool required = true,
bool required_value = true) {
if (options_.find(name) != options_.end()) { if (options_.find(name) != options_.end()) {
std::cerr << "Already registered option: " << name << std::endl; std::cerr << "Already registered option: " << name << std::endl;
return; return;
@@ -213,7 +223,7 @@ class CommandOptions {
} }
size_t index_adjust = 0; size_t index_adjust = 0;
constexpr int kSpacerNum = 5; constexpr int kSpacerNum = 10;
auto need_value = registration_order_options_[i]->IsRequiredValue(); auto need_value = registration_order_options_[i]->IsRequiredValue();
ostream << kOptionStyleNormal ostream << kOptionStyleNormal
<< registration_order_options_[i]->GetName(); << registration_order_options_[i]->GetName();
@@ -242,8 +252,11 @@ class CommandOptions {
class Option { class Option {
public: public:
Option(const std::string& name, const std::string& short_name, Option(const std::string& name,
const std::string& description, bool required, bool required_value) const std::string& short_name,
const std::string& description,
bool required,
bool required_value)
: name_(name), : name_(name),
short_name_(short_name), short_name_(short_name),
description_(description), description_(description),
@@ -288,9 +301,12 @@ class CommandOptions {
template <typename T> template <typename T>
class OptionValue : public Option { class OptionValue : public Option {
public: public:
OptionValue(const std::string& name, const std::string& short_name, OptionValue(const std::string& name,
const std::string& description, const T& default_value, const std::string& short_name,
bool required, bool required_value) const std::string& description,
const T& default_value,
bool required,
bool required_value)
: Option(name, short_name, description, required, required_value), : Option(name, short_name, description, required, required_value),
default_value_(default_value), default_value_(default_value),
value_(default_value){}; value_(default_value){};
@@ -316,10 +332,18 @@ class CommandOptions {
template <typename T, typename F> template <typename T, typename F>
class OptionValueReader : public OptionValue<T> { class OptionValueReader : public OptionValue<T> {
public: public:
OptionValueReader(const std::string& name, const std::string& short_name, OptionValueReader(const std::string& name,
const std::string& description, const T default_value, const std::string& short_name,
F reader, bool required, bool required_value) const std::string& description,
: OptionValue<T>(name, short_name, description, default_value, required, const T default_value,
F reader,
bool required,
bool required_value)
: OptionValue<T>(name,
short_name,
description,
default_value,
required,
required_value), required_value),
reader_(reader) {} reader_(reader) {}
~OptionValueReader() = default; ~OptionValueReader() = default;
@@ -14,18 +14,21 @@
class FlutterEmbedderOptions { class FlutterEmbedderOptions {
public: public:
FlutterEmbedderOptions() { FlutterEmbedderOptions() {
options_.AddString("bundle", "b", "Path to Flutter app bundle", "./", options_.AddString("bundle", "b", "Path to Flutter project bundle",
false); "./bundle", true);
options_.AddWithoutValue("no-cursor", "n", "No mouse cursor/pointer", options_.AddWithoutValue("no-cursor", "n", "No mouse cursor/pointer",
false); false);
options_.AddInt("rotation", "r",
"Window rotation(degree) [0(default)|90|180|270]", 0,
false);
#if defined(FLUTTER_TARGET_BACKEND_GBM) || \ #if defined(FLUTTER_TARGET_BACKEND_GBM) || \
defined(FLUTTER_TARGET_BACKEND_EGLSTREAM) defined(FLUTTER_TARGET_BACKEND_EGLSTREAM)
// no more options. // no more options.
#elif defined(FLUTTER_TARGET_BACKEND_X11) #elif defined(FLUTTER_TARGET_BACKEND_X11)
options_.AddWithoutValue("fullscreen", "f", "Always full-screen display", options_.AddWithoutValue("fullscreen", "f", "Always full-screen display",
false); false);
options_.AddInt("width", "w", "Flutter app window width", 1280, false); options_.AddInt("width", "w", "Window width", 1280, false);
options_.AddInt("height", "h", "Flutter app window height", 720, false); options_.AddInt("height", "h", "Window height", 720, false);
#else // FLUTTER_TARGET_BACKEND_WAYLAND #else // FLUTTER_TARGET_BACKEND_WAYLAND
options_.AddWithoutValue("onscreen-keyboard", "k", options_.AddWithoutValue("onscreen-keyboard", "k",
"Enable on-screen keyboard", false); "Enable on-screen keyboard", false);
@@ -33,8 +36,8 @@ class FlutterEmbedderOptions {
"Enable window decorations", false); "Enable window decorations", false);
options_.AddWithoutValue("fullscreen", "f", "Always full-screen display", options_.AddWithoutValue("fullscreen", "f", "Always full-screen display",
false); false);
options_.AddInt("width", "w", "Flutter app window width", 1280, false); options_.AddInt("width", "w", "Window width", 1280, false);
options_.AddInt("height", "h", "Flutter app window height", 720, false); options_.AddInt("height", "h", "Window height", 720, false);
#endif #endif
} }
~FlutterEmbedderOptions() = default; ~FlutterEmbedderOptions() = default;
@@ -48,6 +51,26 @@ class FlutterEmbedderOptions {
bundle_path_ = options_.GetValue<std::string>("bundle"); bundle_path_ = options_.GetValue<std::string>("bundle");
use_mouse_cursor_ = !options_.Exist("no-cursor"); use_mouse_cursor_ = !options_.Exist("no-cursor");
if (options_.Exist("rotation")) {
switch (options_.GetValue<int>("rotation")) {
case 90:
window_view_rotation_ =
flutter::FlutterViewController::ViewRotation::kRotation_90;
break;
case 180:
window_view_rotation_ =
flutter::FlutterViewController::ViewRotation::kRotation_180;
break;
case 270:
window_view_rotation_ =
flutter::FlutterViewController::ViewRotation::kRotation_270;
break;
default:
window_view_rotation_ =
flutter::FlutterViewController::ViewRotation::kRotation_0;
break;
}
}
#if defined(FLUTTER_TARGET_BACKEND_GBM) || \ #if defined(FLUTTER_TARGET_BACKEND_GBM) || \
defined(FLUTTER_TARGET_BACKEND_EGLSTREAM) defined(FLUTTER_TARGET_BACKEND_EGLSTREAM)
@@ -86,6 +109,9 @@ class FlutterEmbedderOptions {
} }
int WindowWidth() const { return window_width_; } int WindowWidth() const { return window_width_; }
int WindowHeight() const { return window_height_; } int WindowHeight() const { return window_height_; }
flutter::FlutterViewController::ViewRotation WindowRotation() const {
return window_view_rotation_;
}
private: private:
commandline::CommandOptions options_; commandline::CommandOptions options_;
@@ -98,6 +124,8 @@ class FlutterEmbedderOptions {
flutter::FlutterViewController::ViewMode::kNormal; flutter::FlutterViewController::ViewMode::kNormal;
int window_width_ = 1280; int window_width_ = 1280;
int window_height_ = 720; int window_height_ = 720;
flutter::FlutterViewController::ViewRotation window_view_rotation_ =
flutter::FlutterViewController::ViewRotation::kRotation_0;
}; };
#endif // FLUTTER_EMBEDDER_OPTIONS_ #endif // FLUTTER_EMBEDDER_OPTIONS_
+1
View File
@@ -29,6 +29,7 @@ int main(int argc, char** argv) {
view_properties.width = options.WindowWidth(); view_properties.width = options.WindowWidth();
view_properties.height = options.WindowHeight(); view_properties.height = options.WindowHeight();
view_properties.view_mode = options.WindowViewMode(); view_properties.view_mode = options.WindowViewMode();
view_properties.view_rotation = options.WindowRotation();
view_properties.use_mouse_cursor = options.IsUseMouseCursor(); view_properties.use_mouse_cursor = options.IsUseMouseCursor();
view_properties.use_onscreen_keyboard = options.IsUseOnscreenKeyboard(); view_properties.use_onscreen_keyboard = options.IsUseOnscreenKeyboard();
view_properties.use_window_decoration = options.IsUseWindowDecoraation(); view_properties.use_window_decoration = options.IsUseWindowDecoraation();