/// <summary>
        /// Erzeugt eine neue Instanz zum Zeichnen einer Videotext Zeile.
        /// </summary>
        /// <param name="page"></param>
        internal LineDrawingContext(PageDrawingContext page)
        {
            // Remember
            PageContext = page;

            // Create helper
            m_CurrentContext = new CharDrawingContext(this);
        }
Beispiel #2
0
        /// <summary>
        /// Erzeugt die aktuelle Seite als <see cref="Bitmap"/>.
        /// </summary>
        /// <param name="holder">Ein Anzeigeelement als Referenz für die Parameter der <see cref="Bitmap"/>.</param>
        /// <param name="digits">Alle auf der Seite verwendeten Zahlen.</param>
        /// <param name="extend">Beschreibt den tatsächlich relevanten Teil der Seite.</param>
        /// <returns>Eine Darstellung der aktuellen Videotext Seite.</returns>
        public Bitmap CreatePage(Control holder, out DigitManager digits, out RectangleF extend)
        {
            // Create device context
            using (var referenceContext = Graphics.FromHwnd(holder.Handle))
                using (var pageDraw = new PageDrawingContext(referenceContext, IsTransparent))
                {
                    // Process header
                    if (!IsTransparent)
                    {
                        if (!NoHeader)
                        {
                            // Get the prefix for the headline
                            string prefix;
                            if (!string.IsNullOrEmpty(Feedback))
                            {
                                prefix = string.Format("{0}       ", Feedback).Substring(0, 8);
                            }
                            else if (SubPage < 1)
                            {
                                prefix = string.Format("{0:000}     ", Page);
                            }
                            else
                            {
                                prefix = string.Format("{0:000}/{1:00}  ", Page, SubPage).Substring(0, 8);
                            }

                            // Fill the headline
                            pageDraw.DrawHeader(prefix, Header);
                        }
                    }

                    // Fill the body
                    if (!Hide)
                    {
                        for (int i = 0; ++i < 26;)
                        {
                            // Line data
                            byte[] line;
                            if (!m_Lines.TryGetValue(i, out line))
                            {
                                continue;
                            }

                            // Fill the line
                            LineDrawingContext context = pageDraw.DrawLine(i, line);

                            // Skip line if double height characters are used
                            if (context.HasDoubleHeight)
                            {
                                i++;
                            }
                        }
                    }

                    // Attach to digit manager of context
                    digits = pageDraw.Digits;
                    extend = pageDraw.Extend;

                    // Report
                    return(pageDraw.Detach());
                }
        }
        /// <summary>
        /// Erzeugt eine neue Instanz zum Zeichnen einer Videotext Zeile.
        /// </summary>
        /// <param name="page"></param>
        internal LineDrawingContext( PageDrawingContext page )
        {
            // Remember
            PageContext = page;

            // Create helper
            m_CurrentContext = new CharDrawingContext( this );
        }
Beispiel #4
0
        /// <summary>
        /// Erzeugt die aktuelle Seite als <see cref="Bitmap"/>.
        /// </summary>
        /// <param name="holder">Ein Anzeigeelement als Referenz für die Parameter der <see cref="Bitmap"/>.</param>
        /// <param name="digits">Alle auf der Seite verwendeten Zahlen.</param>
        /// <param name="extend">Beschreibt den tatsächlich relevanten Teil der Seite.</param>
        /// <returns>Eine Darstellung der aktuellen Videotext Seite.</returns>
        public Bitmap CreatePage( Control holder, out DigitManager digits, out RectangleF extend )
        {
            // Create device context
            using (var referenceContext = Graphics.FromHwnd( holder.Handle ))
            using (var pageDraw = new PageDrawingContext( referenceContext, IsTransparent ))
            {
                // Process header
                if (!IsTransparent)
                    if (!NoHeader)
                    {
                        // Get the prefix for the headline
                        string prefix;
                        if (!string.IsNullOrEmpty( Feedback ))
                            prefix = string.Format( "{0}       ", Feedback ).Substring( 0, 8 );
                        else if (SubPage < 1)
                            prefix = string.Format( "{0:000}     ", Page );
                        else
                            prefix = string.Format( "{0:000}/{1:00}  ", Page, SubPage ).Substring( 0, 8 );

                        // Fill the headline
                        pageDraw.DrawHeader( prefix, Header );
                    }

                // Fill the body
                if (!Hide)
                    for (int i = 0; ++i < 26; )
                    {
                        // Line data
                        byte[] line;
                        if (!m_Lines.TryGetValue( i, out line ))
                            continue;

                        // Fill the line
                        LineDrawingContext context = pageDraw.DrawLine( i, line );

                        // Skip line if double height characters are used
                        if (context.HasDoubleHeight)
                            i++;
                    }

                // Attach to digit manager of context
                digits = pageDraw.Digits;
                extend = pageDraw.Extend;

                // Report
                return pageDraw.Detach();
            }
        }