command: mark some commands as "scalable"

Scalable commands (seek, cycle and add) understand the cmd->scale
parameter and will "scale" their action accordingly, for example, a seek
with scale = 0.5 will only seek half the specified amount and a seek
with scale = 2.0 will seek twice as much.

Mark these commands so in the next commit, input.c will be able to
synthesize input with cmd->scale = 1 for non-scalable commands.
This commit is contained in:
James Ross-Gowan 2017-04-24 22:04:25 +10:00
parent cc6922cf06
commit 6ccb7b5fa5
2 changed files with 14 additions and 2 deletions

View File

@ -72,6 +72,7 @@ const struct mp_cmd_def mp_cmds[] = {
{"exact", 32|16})), {"exact", 32|16})),
}, },
.allow_auto_repeat = true, .allow_auto_repeat = true,
.scalable = true,
}, },
{ MP_CMD_REVERT_SEEK, "revert-seek", { { MP_CMD_REVERT_SEEK, "revert-seek", {
OARG_FLAGS(0, ({"mark", 1})), OARG_FLAGS(0, ({"mark", 1})),
@ -148,12 +149,15 @@ const struct mp_cmd_def mp_cmds[] = {
{ MP_CMD_SET, "set", { ARG_STRING, ARG_STRING } }, { MP_CMD_SET, "set", { ARG_STRING, ARG_STRING } },
{ MP_CMD_ADD, "add", { ARG_STRING, OARG_DOUBLE(1) }, { MP_CMD_ADD, "add", { ARG_STRING, OARG_DOUBLE(1) },
.allow_auto_repeat = true}, .allow_auto_repeat = true,
.scalable = true,
},
{ MP_CMD_CYCLE, "cycle", { { MP_CMD_CYCLE, "cycle", {
ARG_STRING, ARG_STRING,
OARG_CYCLEDIR(1), OARG_CYCLEDIR(1),
}, },
.allow_auto_repeat = true .allow_auto_repeat = true,
.scalable = true,
}, },
{ MP_CMD_MULTIPLY, "multiply", { ARG_STRING, ARG_DOUBLE }, { MP_CMD_MULTIPLY, "multiply", { ARG_STRING, ARG_DOUBLE },
.allow_auto_repeat = true}, .allow_auto_repeat = true},
@ -348,6 +352,11 @@ bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd)
(cmd->flags & MP_ALLOW_REPEAT); (cmd->flags & MP_ALLOW_REPEAT);
} }
bool mp_input_is_scalable_cmd(struct mp_cmd *cmd)
{
return cmd->def && cmd->def->scalable;
}
void mp_print_cmd_list(struct mp_log *out) void mp_print_cmd_list(struct mp_log *out)
{ {
for (int i = 0; mp_cmds[i].name; i++) { for (int i = 0; mp_cmds[i].name; i++) {

View File

@ -32,6 +32,7 @@ struct mp_cmd_def {
bool allow_auto_repeat; // react to repeated key events bool allow_auto_repeat; // react to repeated key events
bool on_updown; // always emit it on both up and down key events bool on_updown; // always emit it on both up and down key events
bool vararg; // last argument can be given 0 to multiple times bool vararg; // last argument can be given 0 to multiple times
bool scalable;
}; };
extern const struct mp_cmd_def mp_cmds[]; extern const struct mp_cmd_def mp_cmds[];
@ -131,6 +132,8 @@ bool mp_input_is_abort_cmd(struct mp_cmd *cmd);
bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd); bool mp_input_is_repeatable_cmd(struct mp_cmd *cmd);
bool mp_input_is_scalable_cmd(struct mp_cmd *cmd);
struct bstr; struct bstr;
bool mp_replace_legacy_cmd(void *talloc_ctx, struct bstr *s); bool mp_replace_legacy_cmd(void *talloc_ctx, struct bstr *s);