using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Text;

namespace GMLC01HerramientasCad.Logica
{
    /// <summary>
    /// Definición de criterio de etiquetado
    /// </summary>
    public class CriterioEtiquetado
    {
        /// <summary>
        /// Lista de entidades a rotular
        /// </summary>
        public Collection<Entidad> Entidades  { get; internal set; }

        /// <summary>
        /// Atributo del que tomar el valor a rotular
        /// </summary>
        public String Atributo { get; set; }

        /// <summary>
        /// Font del criterio
        /// </summary>
        public String Font { get; set; }

        /// <summary>
        /// Altura en metros del texto
        /// </summary>
        public double Altura { get; set; }

        /// <summary>
        /// Estilo de la font utilizada. Negrita, Cursiva y Subrayado se pueden usar
        /// para acceder o modificar individualmente a los valores del estilo
        /// </summary>
        public System.Drawing.FontStyle Estilo { get; set; }

        /// <summary>
        /// Indica si el texto es en Negrita
        /// </summary>
        public bool Negrita {
            get
            {
                return (Estilo & System.Drawing.FontStyle.Bold) == System.Drawing.FontStyle.Bold;
            }
            set
            {
                if (value)
                    Estilo |= System.Drawing.FontStyle.Bold;
                else
                    Estilo &= ~System.Drawing.FontStyle.Bold;
            }
        }

        /// <summary>
        /// Indica si el texto es en cursiva
        /// </summary>
        public bool Cursiva
        {
            get
            {
                return (Estilo & System.Drawing.FontStyle.Italic) == System.Drawing.FontStyle.Italic;
            }
            set
            {
                if (value)
                    Estilo |= System.Drawing.FontStyle.Italic;
                else
                    Estilo &= ~System.Drawing.FontStyle.Italic;
            }
        }

        /// <summary>
        /// Indica si el texto es subrayado
        /// </summary>
        public bool Subrayado
        {
            get
            {
                return (Estilo & System.Drawing.FontStyle.Underline) == System.Drawing.FontStyle.Underline;
            }
            set
            {
                if (value)
                    Estilo |= System.Drawing.FontStyle.Underline;
                else
                    Estilo &= ~System.Drawing.FontStyle.Underline;
            }
        }

        /// <summary>
        /// Color del texto
        /// </summary>
        public System.Drawing.Color Color { get; set; }

        /// <summary>
        /// Sufijo de la capa donde generar el etiquetado
        /// </summary>
        public String Sufijo { get; set; }
    }
}
