Exemplo n.º 1
0
        private void DoFindLargestFont(ITextOverlay overlay, NSRect rect)
        {
            float[] candidates = new float[]{12.0f, 14.0f, 18.0f, 24.0f, 36.0f, 48.0f, 64.0f, 72.0f, 06.0f, 144.0f, 288.0f, 0.0f};

            int i = 0;
            while (candidates[i + 1] != 0.0f)
            {
                var attrs = NSMutableDictionary.Create();
                NSFont font = NSFont.fontWithName_size(NSString.Create("Verdana"), candidates[i + 1]);
                attrs.setObject_forKey(font, Externs.NSFontAttributeName);

                attrs.setObject_forKey(overlay.Color, Externs.NSForegroundColorAttributeName);

                NSMutableParagraphStyle style = NSMutableParagraphStyle.Create();
                style.setAlignment(Enums.NSCenterTextAlignment);
                attrs.setObject_forKey(style, Externs.NSParagraphStyleAttributeName);

                var candidate = NSAttributedString.Create(overlay.Text, attrs);
                NSSize size = candidate.size();
                if (size.width <= rect.size.width && size.height <= rect.size.height)
                {
                    m_overlay = candidate.Retain();
                    m_overlaySize = size;
                    ++i;
                }
                else
                {
                    break;
                }
            }
        }
Exemplo n.º 2
0
        private void DoCacheOverlay(ITextOverlay overlay, NSRect rect)
        {
            if (overlay.Text != m_overlayText || rect.size != m_overlayRect.size)
            {
                if (m_overlay != null)
                {
                    m_overlay.release();
                    m_overlay = null;
                }

                DoFindLargestFont(overlay, rect);
                m_overlayText = overlay.Text;
                m_overlayRect = rect;
            }
        }