/// <summary>
        /// Repaints the HALCON window 'window' using BufferWindow
        /// </summary>
        public void repaintUsingBufferWindow(HalconDotNet.HWindow window)
        {
            int          count = HObjList.Count;
            HObjectEntry entry;

            // modified
            if ((windowWidth > 0) && (windowHeight > 0))
            {
                if (bufferWindow == null)
                {
                    bufferWindow = new HWindow(0, 0, windowWidth, windowHeight, "root", "buffer", "");
                    // check the boundatries of the image part
                    if ((ImgRow2 > ImgRow1) && (ImgCol2 > ImgCol1))
                    {
                        bufferWindow.SetPart((int)ImgRow1, (int)ImgCol1, (int)ImgRow2, (int)ImgCol2);
                    }
                    // set the image part to window size
                    else
                    {
                        bufferWindow.SetPart(0, 0, windowHeight - 1, windowWidth - 1);
                    }
                }
                else
                {
                    bufferWindow.ClearWindow();
                }

                mGC.stateOfSettings.Clear();

                // display the graphic stack on the buffer window
                for (int i = 0; i < count; i++)
                {
                    entry = ((HObjectEntry)HObjList[i]);
                    if (entry != null)
                    {
                        mGC.applyContext(window, entry.gContext);
                        mGC.applyContext(bufferWindow, entry.gContext);
                        bufferWindow.DispObj(entry.HObj);
                    }
                }

                addInfoDelegate();

                // if any rois exists add this to buffer window
                if (roiManager != null && (dispROI == MODE_INCLUDE_ROI))
                {
                    roiManager.paintData(bufferWindow);
                }

                // copy the content of buffer window to HWindow
                bufferWindow.CopyRectangle(window, 0, 0, windowHeight - 1, windowWidth - 1, 0, 0);

                // dispose the buffer window
                bufferWindow.Dispose();
                bufferWindow = null;
            }
        }