123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using CommonUI.Gemo;
- using CommonLang.Concurrent;
- namespace CommonUI.Display
- {
- public enum FontStyle
- {
- STYLE_PLAIN = 0,
- STYLE_BOLD = 1,
- STYLE_ITALIC = 2,
- STYLE_UNDERLINED = 4,
- STYLE_BOLD_UNDERLINED = 5,
- STYLE_ITALIC_UNDERLINED = 6,
- STYLE_BOLD_ITALIC = 7,
- STYLE_BOLD_ITALIC_UNDERLINED = 8
- }
- public abstract class TextLayer : IDisposable
- {
- public static uint DefaultDisableTextColorRGBA = 0x808080FF;
- private static AtomicLong s_RefCount = new AtomicLong(0);
- private static AtomicLong s_AliveCount = new AtomicLong(0);
- public static long RefCount { get { return s_RefCount.Value; } }
- public static long AliveCount { get { return s_AliveCount.Value; } }
- private bool m_disposed = false;
- protected string mText = "";
- protected uint mFontColorRGBA = 0xffffffff;
- protected uint mBorderColorRGBA = 0x000000ff;
- protected int mBorderTime = 8;
- protected Size2D mExpectSize = null;
- protected int mFontSize;
- protected FontStyle mFontStyle;
- protected Size2D mBounds = new Size2D();
- protected bool isDirty = true;
- protected bool isEnable = true;
- public TextLayer(string t, int size, FontStyle style = FontStyle.STYLE_PLAIN)
- {
- s_RefCount++;
- s_AliveCount++;
- this.mText = t;
- this.mFontSize = Math.Max(1, size);
- this.mFontStyle = style;
- }
- ~TextLayer()
- {
- s_RefCount--;
- }
- public void Dispose()
- {
- if (m_disposed) { return; }
- Disposing();
- m_disposed = true;
- s_AliveCount--;
- }
- protected abstract void Disposing();
- public bool IsEnable
- {
- get { return isEnable; }
- set
- {
- if (this.isEnable != value)
- {
- this.isEnable = value;
- this.isDirty = true;
- }
- }
- }
- public Size2D ExpectSize
- {
- get { return mExpectSize; }
- set
- {
- if (!value.Equals(mExpectSize))
- {
- this.mExpectSize = value;
- this.isDirty = true;
- }
- }
- }
- public string Text
- {
- get { return mText; }
- set
- {
- if (!value.Equals(this.mText))
- {
- this.mText = value;
- this.isDirty = true;
- }
- }
- }
- public int FontSize
- {
- set
- {
- value = Math.Max(1, value);
- if (mFontSize != value)
- {
- mFontSize = value;
- this.isDirty = true;
- }
- }
- get { return mFontSize; }
- }
- public FontStyle TextFontStyle
- {
- set
- {
- if (mFontStyle != value)
- {
- mFontStyle = value;
- this.isDirty = true;
- }
- }
- get { return mFontStyle; }
- }
- public uint FontColor
- {
- get { return mFontColorRGBA; }
- set
- {
- if (this.mFontColorRGBA != value)
- {
- this.mFontColorRGBA = value;
- this.isDirty = true;
- }
- }
- }
- public uint BorderColor
- {
- get
- {
- return mBorderColorRGBA;
- }
- set
- {
- if (this.mBorderColorRGBA != value)
- {
- this.mBorderColorRGBA = value;
- this.isDirty = true;
- }
- }
- }
- public int BorderTime
- {
- get { return mBorderTime; }
- set
- {
- if (this.mBorderTime != value)
- {
- this.mBorderTime = value;
- this.isDirty = true;
- }
- }
- }
-
- public float Width
- {
- get { return mBounds.width; }
- }
- public float Height
- {
- get { return mBounds.height; }
- }
- public void SetFontColor(int rgb, float alpha = 1.0f)
- {
- uint uc = (uint)((rgb & 0xffffff) | (int)Math.Min(alpha * 255, 255));
- FontColor = (uc);
- }
- public void SetFontColor(uint rgba)
- {
- FontColor = rgba;
- }
- public void SetBorderColor(int rgb, int alpha = 0xff)
- {
- uint uc = (uint)((rgb & 0xffffff) | (int)Math.Min(alpha * 255, 255));
- BorderColor = (uc);
- }
- abstract public Image GetBuffer();
-
- }
- }
|