mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2025-02-06 07:34:56 +01:00
Introduce zathura_annotation_is_markup_annotation function
This commit is contained in:
parent
312392acc8
commit
724ecbd966
3 changed files with 75 additions and 51 deletions
115
annotations.c
115
annotations.c
|
@ -16,18 +16,19 @@ struct zathura_annotation_s {
|
|||
void* user_data; /**< Custom data */
|
||||
|
||||
union {
|
||||
struct {
|
||||
char* label; /**< Label */
|
||||
char* subject; /**< Subject of the annotation */
|
||||
zathura_annotation_popup_t* popup; /**< Optional popup */
|
||||
time_t creation_date; /**< Creation date */
|
||||
} markup;
|
||||
struct {
|
||||
zathura_annotation_text_icon_t icon; /**< The icon of the text annotation */
|
||||
zathura_annotation_text_state_t state; /**< The state of the text annotation */
|
||||
bool opened; /**< Open status of the text annotation */
|
||||
} text;
|
||||
} data;
|
||||
|
||||
struct {
|
||||
char* label; /**< Label */
|
||||
char* subject; /**< Subject of the annotation */
|
||||
zathura_annotation_popup_t* popup; /**< Optional popup */
|
||||
time_t creation_date; /**< Creation date */
|
||||
} markup;
|
||||
};
|
||||
|
||||
struct zathura_annotation_popup_s {
|
||||
|
@ -47,19 +48,18 @@ zathura_annotation_new(zathura_annotation_type_t type)
|
|||
}
|
||||
|
||||
switch (type) {
|
||||
case ZATHURA_ANNOTATION_MARKUP:
|
||||
annotation->data.markup.creation_date = (time_t) -1;
|
||||
break;
|
||||
case ZATHURA_ANNOTATION_TEXT:
|
||||
annotation->data.text.icon = ZATHURA_ANNOTATION_TEXT_ICON_UNKNOWN;
|
||||
annotation->data.text.state = ZATHURA_ANNOTATION_TEXT_STATE_UNKNOWN;
|
||||
break;
|
||||
default:
|
||||
free(annotation);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
annotation->type = type;
|
||||
annotation->modification_date = (time_t) -1;
|
||||
annotation->type = type;
|
||||
annotation->modification_date = (time_t) -1;
|
||||
annotation->markup.creation_date = (time_t) -1;
|
||||
annotation->data.text.icon = ZATHURA_ANNOTATION_TEXT_ICON_UNKNOWN;
|
||||
annotation->data.text.state = ZATHURA_ANNOTATION_TEXT_STATE_UNKNOWN;
|
||||
|
||||
return annotation;
|
||||
}
|
||||
|
@ -79,22 +79,16 @@ zathura_annotation_free(zathura_annotation_t* annotation)
|
|||
free(annotation->content);
|
||||
}
|
||||
|
||||
switch (annotation->type) {
|
||||
case ZATHURA_ANNOTATION_MARKUP:
|
||||
if (annotation->data.markup.label != NULL) {
|
||||
free(annotation->data.markup.label);
|
||||
}
|
||||
if (annotation->markup.label != NULL) {
|
||||
free(annotation->markup.label);
|
||||
}
|
||||
|
||||
if (annotation->data.markup.subject != NULL) {
|
||||
free(annotation->data.markup.subject);
|
||||
}
|
||||
if (annotation->markup.subject != NULL) {
|
||||
free(annotation->markup.subject);
|
||||
}
|
||||
|
||||
if (annotation->data.markup.popup != NULL) {
|
||||
zathura_annotation_popup_free(annotation->data.markup.popup);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
if (annotation->markup.popup != NULL) {
|
||||
zathura_annotation_popup_free(annotation->markup.popup);
|
||||
}
|
||||
|
||||
free(annotation);
|
||||
|
@ -130,6 +124,29 @@ zathura_annotation_get_type(zathura_annotation_t* annotation)
|
|||
return annotation->type;
|
||||
}
|
||||
|
||||
bool
|
||||
zathura_annotation_is_markup_annotation(zathura_annotation_t* annotation)
|
||||
{
|
||||
if (annotation == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (annotation->type) {
|
||||
case ZATHURA_ANNOTATION_TEXT:
|
||||
case ZATHURA_ANNOTATION_FREE_TEXT:
|
||||
case ZATHURA_ANNOTATION_LINE:
|
||||
case ZATHURA_ANNOTATION_STAMP:
|
||||
case ZATHURA_ANNOTATION_POLYGON:
|
||||
case ZATHURA_ANNOTATION_CARET:
|
||||
case ZATHURA_ANNOTATION_INK:
|
||||
case ZATHURA_ANNOTATION_FILE_ATTACHMENT:
|
||||
case ZATHURA_ANNOTATION_SOUND:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
zathura_annotation_flag_t
|
||||
zathura_annotation_get_flags(zathura_annotation_t* annotation)
|
||||
{
|
||||
|
@ -270,96 +287,96 @@ zathura_annotation_set_position(zathura_annotation_t* annotation,
|
|||
char*
|
||||
zathura_annotation_markup_get_label(zathura_annotation_t* annotation)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return annotation->data.markup.label;
|
||||
return annotation->markup.label;
|
||||
}
|
||||
|
||||
void
|
||||
zathura_annotation_markup_set_label(zathura_annotation_t* annotation, const char* label)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (annotation->data.markup.label != NULL) {
|
||||
free(annotation->data.markup.label);
|
||||
if (annotation->markup.label != NULL) {
|
||||
free(annotation->markup.label);
|
||||
}
|
||||
|
||||
if (label != NULL) {
|
||||
annotation->data.markup.label = __strdup(label);
|
||||
annotation->markup.label = __strdup(label);
|
||||
} else {
|
||||
annotation->data.markup.label = NULL;
|
||||
annotation->markup.label = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
char*
|
||||
zathura_annotation_markup_get_subject(zathura_annotation_t* annotation)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return annotation->data.markup.subject;
|
||||
return annotation->markup.subject;
|
||||
}
|
||||
|
||||
void
|
||||
zathura_annotation_markup_set_subject(zathura_annotation_t* annotation, const char* subject)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return;
|
||||
}
|
||||
if (annotation->data.markup.subject != NULL) {
|
||||
free(annotation->data.markup.subject);
|
||||
if (annotation->markup.subject != NULL) {
|
||||
free(annotation->markup.subject);
|
||||
}
|
||||
|
||||
if (subject != NULL) {
|
||||
annotation->data.markup.subject = __strdup(subject);
|
||||
annotation->markup.subject = __strdup(subject);
|
||||
} else {
|
||||
annotation->data.markup.subject = NULL;
|
||||
annotation->markup.subject = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
zathura_annotation_popup_t*
|
||||
zathura_annotation_markup_get_popup(zathura_annotation_t* annotation)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return annotation->data.markup.popup;
|
||||
return annotation->markup.popup;
|
||||
}
|
||||
|
||||
void
|
||||
zathura_annotation_markup_set_popup(zathura_annotation_t* annotation, zathura_annotation_popup_t* popup)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP || popup == NULL) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false || popup == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
annotation->data.markup.popup = popup;
|
||||
annotation->markup.popup = popup;
|
||||
}
|
||||
|
||||
time_t
|
||||
zathura_annotation_markup_get_creation_date(zathura_annotation_t* annotation)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return (time_t) -1;
|
||||
}
|
||||
|
||||
return annotation->data.markup.creation_date;
|
||||
return annotation->markup.creation_date;
|
||||
}
|
||||
|
||||
void
|
||||
zathura_annotation_markup_set_creation_date(zathura_annotation_t* annotation, time_t creation_date)
|
||||
{
|
||||
if (annotation == NULL || annotation->type != ZATHURA_ANNOTATION_MARKUP) {
|
||||
if (annotation == NULL || zathura_annotation_is_markup_annotation(annotation) == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
annotation->data.markup.creation_date = creation_date;
|
||||
annotation->markup.creation_date = creation_date;
|
||||
}
|
||||
|
||||
zathura_annotation_text_icon_t
|
||||
|
|
|
@ -39,7 +39,6 @@ typedef enum zathura_annotation_type_s {
|
|||
ZATHURA_ANNOTATION_TRAP_NET,
|
||||
ZATHURA_ANNOTATION_WATERMARK,
|
||||
ZATHURA_ANNOTATION_3D,
|
||||
ZATHURA_ANNOTATION_MARKUP
|
||||
} zathura_annotation_type_t;
|
||||
|
||||
typedef enum zathura_annotation_flag_s {
|
||||
|
@ -119,6 +118,14 @@ void zathura_annotation_set_data(zathura_annotation_t* annotation, void* data);
|
|||
*/
|
||||
zathura_annotation_type_t zathura_annotation_get_type(zathura_annotation_t* annotation);
|
||||
|
||||
/**
|
||||
* True if the given annotation is a markup annotation
|
||||
*
|
||||
* @param annotation The annotation
|
||||
* @return true whether the annotation is a markup annotation otherwise false
|
||||
*/
|
||||
bool zathura_annotation_is_markup_annotation(zathura_annotation_t* annotation);
|
||||
|
||||
/**
|
||||
* Returns the flags of the annotation
|
||||
*
|
||||
|
|
|
@ -772,7 +772,7 @@ cb_menu_annotation_add(GtkMenuItem* item, ZathuraPage* page)
|
|||
|
||||
/* create new annotation */
|
||||
zathura_annotation_t* annotation =
|
||||
zathura_annotation_new(ZATHURA_ANNOTATION_MARKUP);
|
||||
zathura_annotation_new(ZATHURA_ANNOTATION_TEXT);
|
||||
if (annotation == NULL) {
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue