Exemple #1
0
        /// <summary> 创建一个新字体样式 </summary>
        /// <returns>样式编号</returns>
        public int NewDefaultTextStyle()
        {
            HCTextStyle vTextStyle = new HCTextStyle();

            FTextStyles.Add(vTextStyle);
            return(FTextStyles.Count - 1);
        }
Exemple #2
0
        public override int GetMatchStyleNo(HCStyle AStyle, int ACurStyleNo)
        {
            int Result = HCStyle.Null;

            if (AStyle.TextStyles[ACurStyleNo].BackColor == FColor)
            {
                Result = ACurStyleNo;
                return(Result);
            }
            HCTextStyle vTextStyle = new HCTextStyle();

            try
            {
                vTextStyle.AssignEx(AStyle.TextStyles[ACurStyleNo]);  // item当前的样式
                vTextStyle.BackColor = FColor;
                if (this.OnTextStyle != null)
                {
                    this.OnTextStyle(ACurStyleNo, ref vTextStyle);
                }
                Result = AStyle.GetStyleNo(vTextStyle, true);  // 新样式编号
            }
            finally
            {
                vTextStyle.Dispose();
            }

            return(Result);
        }
Exemple #3
0
        public int GetStyleNo(HCTextStyle aTextStyle, bool aCreateIfNull)
        {
            int Result = -1;

            for (int i = 0; i <= FTextStyles.Count - 1; i++)
            {
                if (FTextStyles[i].EqualsEx(aTextStyle))
                {
                    Result = i;
                    return(Result);
                }
            }

            if (aCreateIfNull && (Result < 0))
            {
                HCTextStyle vTextStyle = new HCTextStyle();
                vTextStyle.AssignEx(aTextStyle);
                FTextStyles.Add(vTextStyle);
                vTextStyle.ApplyStyle(FTempCanvas);
                Result       = FTextStyles.Count - 1;
                FTempStyleNo = Result;
            }

            return(Result);
        }
 public void AssignEx(HCTextStyle aSource)
 {
     this.FSize             = aSource.Size;
     this.FFontStyles.Value = aSource.FontStyles.Value;
     this.FFamily           = aSource.Family;
     this.FColor            = aSource.Color;
     this.FBackColor        = aSource.BackColor;
 }
        /// <summary> 创建一个新字体样式 </summary>
        /// <returns>样式编号</returns>
        public int NewDefaultTextStyle()
        {
            HCTextStyle vTextStyle = new HCTextStyle();

            FTextStyles.Add(vTextStyle);
            vTextStyle.ApplyStyle(FTempCanvas);
            return(FTextStyles.Count - 1);
        }
Exemple #6
0
 public void AssignEx(HCTextStyle ASource)
 {
     this.FSize       = ASource.Size;
     this.FFontStyles = ASource.FontStyles;
     this.FFamily     = ASource.Family;
     this.FColor      = ASource.Color;
     this.FBackColor  = ASource.BackColor;
 }
 public bool EqualsEx(HCTextStyle aSource)
 {
     return((this.FSize == aSource.Size) &&
            (this.FFontStyles.Value == aSource.FontStyles.Value) &&
            (this.FFamily == aSource.Family) &&
            (this.FColor == aSource.Color) &&
            (this.FBackColor == aSource.BackColor));
 }
Exemple #8
0
        // 类内部方法
        private void ApplySupSubStyle(HCTextStyle aTextStyle, HCCanvas aCanvas, Single aScale = 1)
        {
            if (aTextStyle.BackColor == HC.HCTransparentColor)
            {
                aCanvas.Brush.Style = HCBrushStyle.bsClear;
            }
            else
            {
                aCanvas.Brush.Color = aTextStyle.BackColor;
            }

            aCanvas.Font.BeginUpdate();
            try
            {
                aCanvas.Font.Color  = aTextStyle.Color;
                aCanvas.Font.Family = aTextStyle.Family;
                aCanvas.Font.Size   = (int)Math.Round(aTextStyle.Size * 2 / 3f);
                if (aTextStyle.FontStyles.Contains((byte)HCFontStyle.tsBold))
                {
                    aCanvas.Font.FontStyles.InClude((byte)HCFontStyle.tsBold);
                }
                else
                {
                    aCanvas.Font.FontStyles.ExClude((byte)HCFontStyle.tsBold);
                }

                if (aTextStyle.FontStyles.Contains((byte)HCFontStyle.tsItalic))
                {
                    aCanvas.Font.FontStyles.InClude((byte)HCFontStyle.tsItalic);
                }
                else
                {
                    aCanvas.Font.FontStyles.ExClude((byte)HCFontStyle.tsItalic);
                }

                if (aTextStyle.FontStyles.Contains((byte)HCFontStyle.tsUnderline))
                {
                    aCanvas.Font.FontStyles.InClude((byte)HCFontStyle.tsUnderline);
                }
                else
                {
                    aCanvas.Font.FontStyles.ExClude((byte)HCFontStyle.tsUnderline);
                }

                if (aTextStyle.FontStyles.Contains((byte)HCFontStyle.tsStrikeOut))
                {
                    aCanvas.Font.FontStyles.InClude((byte)HCFontStyle.tsStrikeOut);
                }
                else
                {
                    aCanvas.Font.FontStyles.ExClude((byte)HCFontStyle.tsStrikeOut);
                }
            }
            finally
            {
                aCanvas.Font.EndUpdate();
            }
        }
        protected void LoadItemFromStreamAlone(Stream aStream, ref HCCustomItem aItem)
        {
            string vFileExt     = "";
            ushort vFileVersion = 0;
            byte   vLan         = 0;

            aStream.Position = 0;
            HC._LoadFileFormatAndVersion(aStream, ref vFileExt, ref vFileVersion, ref vLan);  // 文件格式和版本
            if ((vFileExt != HC.HC_EXT) && (vFileExt != "cff."))
            {
                throw new Exception("加载失败,不是" + HC.HC_EXT + "文件!");
            }

            int vStyleNo = HCStyle.Null;

            byte[] vBuffer = BitConverter.GetBytes(vStyleNo);
            aStream.Read(vBuffer, 0, vBuffer.Length);
            vStyleNo = BitConverter.ToInt32(vBuffer, 0);

            if (aItem == null)
            {
                aItem = CreateItemByStyle(vStyleNo);
            }

            aItem.LoadFromStream(aStream, null, vFileVersion);

            if (vStyleNo > HCStyle.Null)
            {
                HCTextStyle vTextStyle = new HCTextStyle();
                try
                {
                    vTextStyle.LoadFromStream(aStream, vFileVersion);
                    vStyleNo      = Style.GetStyleNo(vTextStyle, true);
                    aItem.StyleNo = vStyleNo;
                }
                finally
                {
                    vTextStyle.Dispose();
                }
            }

            int         vParaNo    = -1;
            HCParaStyle vParaStyle = new HCParaStyle();

            try
            {
                vParaStyle.LoadFromStream(aStream, vFileVersion);
                vParaNo = Style.GetParaNo(vParaStyle, true);
            }
            finally
            {
                vParaStyle.Dispose();
            }

            aItem.ParaNo = vParaNo;
        }
Exemple #10
0
        public override int GetMatchStyleNo(HCStyle AStyle, int ACurStyleNo)
        {
            int         Result     = HCStyle.Null;
            HCTextStyle vTextStyle = new HCTextStyle();

            try
            {
                vTextStyle.AssignEx(AStyle.TextStyles[ACurStyleNo]);  // item当前的样式
                if (this.Append)
                {
                    if (!vTextStyle.FontStyles.Contains((byte)FFontStyle))
                    {
                        // 不能同时为上标和下标
                        if (FFontStyle == HCFontStyle.tsSuperscript)
                        {
                            vTextStyle.FontStyles.ExClude((byte)HCFontStyle.tsSubscript);
                        }
                        else
                        if (FFontStyle == HCFontStyle.tsSubscript)
                        {
                            vTextStyle.FontStyles.ExClude((byte)HCFontStyle.tsSuperscript);
                        }

                        vTextStyle.FontStyles.InClude((byte)FFontStyle);
                    }
                    else
                    {
                        return(ACurStyleNo);
                    }
                }
                else  // 减去
                {
                    if (vTextStyle.FontStyles.Contains((byte)FFontStyle))
                    {
                        vTextStyle.FontStyles.ExClude((byte)FFontStyle);
                    }
                    else
                    {
                        return(ACurStyleNo);
                    }
                }

                if (this.OnTextStyle != null)
                {
                    this.OnTextStyle(ACurStyleNo, ref vTextStyle);
                }
                Result = AStyle.GetStyleNo(vTextStyle, true);  // 新样式编号
            }
            finally
            {
                vTextStyle.Dispose();
            }

            return(Result);
        }
Exemple #11
0
            Custom         = -1000; // 自定义类型分界线

        public HCStyle()
        {
            FTempCanvas       = CreateStyleCanvas();
            FTempStyleNo      = HCStyle.Null;
            FBackgroundColor  = Color.FromArgb(255, 255, 255);
            FSelColor         = Color.FromArgb(0xA6, 0xCA, 0xF0);
            FLineSpaceMin     = 8;
            FShowParaLastMark = true;
            FStates           = new HCStates();
            FUpdateInfo       = new UpdateInfo();
            FTextStyles       = new List <HCTextStyle>();
            FParaStyles       = new List <HCParaStyle>();
            FDefaultTextStyle = new HCTextStyle();
        }
Exemple #12
0
        public override bool StyleHasMatch(HCStyle AStyle, int ACurStyleNo)
        {
            bool        Result     = false;
            HCTextStyle vTextStyle = new HCTextStyle();

            try
            {
                vTextStyle.AssignEx(AStyle.TextStyles[ACurStyleNo]);  // item当前的样式
                Result = vTextStyle.FontStyles.Contains((byte)FFontStyle);
            }
            finally
            {
                vTextStyle.Dispose();
            }
            return(Result);
        }
Exemple #13
0
            Custom         = -1000; // 自定义类型分界线

        public HCStyle()
        {
            FTempCanvas             = CreateStyleCanvas();
            FTempStyleNo            = HCStyle.Null;
            FBackgroundColor        = Color.FromArgb(255, 255, 255);
            FSelColor               = Color.FromArgb(0xA6, 0xCA, 0xF0);
            FLineSpaceMin           = 8;
            FFormatVersion          = 2;
            FShowParaLastMark       = true;
            FDrawHotDomainRegion    = true;
            FDrawActiveDomainRegion = true;
            FStates           = new HCStates();
            FUpdateInfo       = new UpdateInfo();
            FTextStyles       = new List <HCTextStyle>();
            FParaStyles       = new List <HCParaStyle>();
            FDefaultTextStyle = new HCTextStyle();
            FDefaultTextStyle.ApplyStyle(FTempCanvas);
        }
        public int GetMatchStyleNo(HCStyle aStyle, int aCurStyleNo)
        {
            if (DoMatchCur(aStyle.TextStyles[aCurStyleNo]))
            {
                return(aCurStyleNo);
            }

            using (HCTextStyle vTextStyle = new HCTextStyle())
            {
                vTextStyle.AssignEx(aStyle.TextStyles[aCurStyleNo]);
                DoMatchNew(vTextStyle);
                if (FOnTextStyle != null)
                {
                    FOnTextStyle(aCurStyleNo, vTextStyle);
                }

                return(aStyle.GetStyleNo(vTextStyle, true));
            }
        }
        protected override void DoMatchNew(HCTextStyle aTextStyle)
        {
            if (Append)
            {
                if (FFontStyle == HCFontStyle.tsSuperscript)
                {
                    aTextStyle.FontStyles.ExClude((byte)HCFontStyle.tsSubscript);
                }
                else
                if (FFontStyle == HCFontStyle.tsSubscript)
                {
                    aTextStyle.FontStyles.ExClude((byte)HCFontStyle.tsSuperscript);
                }

                aTextStyle.FontStyles.InClude((byte)FFontStyle);
            }
            else
            {
                aTextStyle.FontStyles.ExClude((byte)FFontStyle);
            }
        }
Exemple #16
0
        public int GetStyleNo(HCTextStyle ATextStyle, bool ACreateIfNull)
        {
            int Result = -1;

            for (int i = 0; i <= FTextStyles.Count - 1; i++)
            {
                if (FTextStyles[i].EqualsEx(ATextStyle))
                {
                    Result = i;
                    return(Result);
                }
            }

            if (ACreateIfNull && (Result < 0))
            {
                HCTextStyle vTextStyle = new HCTextStyle();
                vTextStyle.AssignEx(ATextStyle);
                FTextStyles.Add(vTextStyle);
                Result = FTextStyles.Count - 1;
            }

            return(Result);
        }
 protected override void DoMatchNew(HCTextStyle aTextStyle)
 {
     aTextStyle.Family = FFontName;
 }
Exemple #18
0
 public int AddTextStyle(HCTextStyle aTextStyle)
 {
     FTextStyles.Add(aTextStyle);
     return(FTextStyles.Count - 1);
 }
 protected override bool DoMatchCur(HCTextStyle aTextStyle)
 {
     return(Append && aTextStyle.FontStyles.Contains((byte)FFontStyle));
 }
 protected abstract void DoMatchNew(HCTextStyle aTextStyle);
 protected abstract bool DoMatchCur(HCTextStyle aTextStyle);
 protected override void DoMatchNew(HCTextStyle aTextStyle)
 {
     aTextStyle.BackColor = FColor;
 }
 protected override bool DoMatchCur(HCTextStyle aTextStyle)
 {
     return(aTextStyle.BackColor == FColor);
 }
 protected override void DoMatchNew(HCTextStyle aTextStyle)
 {
     aTextStyle.Size = FFontSize;
 }
 protected override bool DoMatchCur(HCTextStyle aTextStyle)
 {
     return(aTextStyle.Size == FFontSize);
 }
 protected override bool DoMatchCur(HCTextStyle aTextStyle)
 {
     return(aTextStyle.Family == FFontName);
 }