Esempio n. 1
0
        /// <summary>
        /// Реальная физическая перерисовка, если виджет имеет ширину и высоту и помечен к перерисовке
        /// </summary>
        public void Redraw(bool force = false)
        {
            if (Height != 0 && Width != 0 && IsDirty)
            {
                //Console.WriteLine("{1}: redraw: {0}", Name, DateTime.Now.ToString("mm:ss.fff"));

                VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_PATH_USER_TO_SURFACE);
                VG.vgLoadIdentity();

                VG.vgSeti(VGParamType.VG_MATRIX_MODE, (int)VGMatrixMode.VG_MATRIX_IMAGE_USER_TO_SURFACE);
                VG.vgLoadIdentity();

                VG.vgSetfv(VGParamType.VG_CLEAR_COLOR, 4, new[] { 1.0f, 1.0f, 1.0f, 0.0f });
                VG.vgClear(0, 0, Width, Height);
                VG.vgFinish();

                // TODO: swap debug only
                if (SwapDebug)
                {
                    mApplication.Swap();
                }

                Draw();
                VG.vgFinish();

                // TODO: swap debug only
                if (SwapDebug)
                {
                    mApplication.Swap();
                }

                mRenderBuffer.Copy(); // TODO: вместо mRenderBuffer.Activate();

                IsDirty = false;
            }

            foreach (var widget in mChilds)
            {
                ((Widget)widget).Redraw();
            }
        }