Пример #1
0
        public TTFTextTexturePortion ComputeGlyphBitmap(object parameters, object font, char c)
        {
            TTFTextTexturePortion p = new TTFTextTexturePortion(
                _texture,
                0, 0, 1, 1,
                _textWidthPixels, _textHeightPixels,
                0, 0,
                true
                );

            return(p);
        }
        public TTFTextTexturePortion GetChar(char c)
        {
            //int idx=requested_characters.IndexOf(c);
            Rect q = quads[c];
            Rect r = rects[c];
            TTFTextTexturePortion portion = null;

            if (!packed_material)
            {
                portion = new TTFTextTexturePortion(packed_textures,
                                                    r.x,
                                                    r.y,

                                                    r.width,
                                                    r.height,

                                                    q.width,
                                                    q.height,
                                                    q.x,
                                                    q.y,
                                                    false
                                                    );
            }
            else
            {
                portion = new TTFTextTexturePortion(packed_material,
                                                    r.x,
                                                    r.y,
                                                    r.width,
                                                    r.height,
                                                    q.width,
                                                    q.height,
                                                    q.x,
                                                    q.y,
                                                    false
                                                    );
            }
            return(portion);
        }
        public void UpdatePackedTexture()
        {
            if (updated)
            {
                Texture2D [] texa = new Texture2D[texs.Count];
                int          ci   = 0;
                foreach (TTFTextTexturePortion tex in texs.Values)
                {
                    texa[ci++] = (Texture2D)tex.texture;
                }


                if (packed_textures == null)
                {
                    packed_textures = new Texture2D(1, 1, TextureFormat.RGBA32, false);
                }

                Rect [] r = packed_textures.PackTextures(texa, 0);

                rects.Clear();
                int i = 0;
                foreach (char c in texs.Keys)
                {
                    TTFTextTexturePortion portion = texs[c];
                    rects.Add(c, r[i]);
                    quads.Add(c, new Rect(portion.x, portion.y, portion.w, portion.h));
                    i++;
                    if (portion.shouldReleaseTexture)
                    {
                        TTFTextInternal.Utilities.DestroyObj(portion.texture);
                    }
                }


                texs.Clear();
            }
        }
Пример #4
0
        public TTFTextTexturePortion ComputeGlyphBitmap(object parameters, object font, char c)
        {
            SysFontTexture tex = new SysFontTexture();
            FontSelector   fs  = (FontSelector)GetFontSelectorFromFontName((string)font);

            tex.AndroidFontName = fs.AndroidFontName;
            tex.AppleFontName   = fs.AppleFontName;
            tex.Update();

            Texture2D _texture = new Texture2D(1, 1, TextureFormat.Alpha8, false);

            //Texture2D _texture = new Texture2D(64, 64, TextureFormat.RGBA32, false);
            _texture.hideFlags  = HideFlags.HideInInspector | HideFlags.DontSave;
            _texture.filterMode = FilterMode.Point;
            _texture.wrapMode   = TextureWrapMode.Clamp;
            int textureID = _texture.GetNativeTextureID();

            SysFont.QueueTexture("" + c,
#if UNITY_ANDROID
                                 fs.AndroidFontName
#else
#if UNITY_IPHONE
                                 fs.AppleFontName
#else
                                     ((string)font)
#endif
#endif
                                 ,
                                 12,
                                 false,                  //_isBold,
                                 false,                  //_isItalic,
                                 SysFont.Alignment.Left, //_alignment,
                                 false,
                                 2048,
                                 2048,
                                 textureID
                                 );

            int _textWidthPixels  = SysFont.GetTextWidth(textureID);
            int _textHeightPixels = SysFont.GetTextHeight(textureID);



            SysFont.UpdateQueuedTexture(textureID);
            Debug.Log(".");

            Parameters cp = parameters as Parameters;
            Material   m  = null;
            if (cp != null)
            {
                Shader shader = Shader.Find(cp.shaderName);
                if (shader == null)
                {
                    shader = Shader.Find("Mobile/Diffuse");
                }
                if (shader == null)
                {
                    shader = Shader.Find("Diffuse");
                }
                m             = new Material(shader);
                m.color       = new Color(cp.red, cp.green, cp.blue, cp.alpha);
                m.mainTexture = _texture;
            }
            else
            {
                Shader shader = Shader.Find("SysFont/Unlit Transparent");
                if (shader == null)
                {
                    shader = Shader.Find("Mobile/Diffuse");
                }
                if (shader == null)
                {
                    shader = Shader.Find("Diffuse");
                }
                m             = new Material(shader);
                m.color       = Color.black;
                m.mainTexture = _texture;
            }

            TTFTextTexturePortion p = new TTFTextTexturePortion(
                m,
                0, 0, 1, 1,
                _textWidthPixels * cp.scale, _textHeightPixels * cp.scale,
                0, 0,
                true
                );

            return(p);
        }