示例#1
0
        private void _UpdateFilterPositionDataForFilter(FilterShape filterShape)
        {
            FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();

            position.xPositionProportion = (double)filterShape.X / _previousDiagramWidth;
            position.yPosition           = filterShape.Y;

            _applicationData.FilterSetupFormShapePositions[filterShape.FilterInstance.InstanceId] = position;
        }
示例#2
0
        private void _ResizeAndPositionFilterShapes(int oldDiagramWidth, int newDiagramWidth)
        {
            diagramDisplay.DoSuspendUpdate();

            double defaultXPositionProportion = 0.5;
            int    y = SHAPE_Y_TOP;

            foreach (FilterShape filterShape in _filterShapes)
            {
                filterShape.Width  = SHAPE_FILTERS_WIDTH;
                filterShape.Height = SHAPE_FILTERS_HEIGHT;

                FilterSetupFormShapePosition position = null;
                bool updatePosition = true;

                // if the filtershape is unpositioned, it's either first load (nothing positioned yet), or maybe new?
                // look it up in the application data for a position, otherwise default it.
                // (same if there's no old diagram width given; we'd have nothing to proportion from!)
                if ((filterShape.X <= 0 && filterShape.Y <= 0) || oldDiagramWidth <= 0)
                {
                    if (_applicationData.FilterSetupFormShapePositions.TryGetValue(filterShape.FilterInstance.InstanceId, out position))
                    {
                        updatePosition = false;
                    }
                    else
                    {
                        position = new FilterSetupFormShapePosition();
                        position.xPositionProportion = defaultXPositionProportion;
                        position.yPosition           = y;

                        // because we've used a default position, increment the default Y position
                        y += filterShape.Height + SHAPE_VERTICAL_SPACING;
                    }
                }
                else
                {
                    position = new FilterSetupFormShapePosition();
                    position.xPositionProportion = (double)filterShape.X / oldDiagramWidth;
                    position.yPosition           = filterShape.Y;
                }

                filterShape.X = (int)(newDiagramWidth * position.xPositionProportion);
                filterShape.Y = position.yPosition;

                if (updatePosition)
                {
                    _applicationData.FilterSetupFormShapePositions[filterShape.FilterInstance.InstanceId] = position;
                }
            }

            _previousDiagramWidth = newDiagramWidth;

            diagramDisplay.DoResumeUpdate();
        }
示例#3
0
        public IEnumerable <FilterShape> DuplicateFilterInstancesToShapes(
            IEnumerable <IOutputFilterModuleInstance> sourceInstances,
            int numberOfCopies,
            Point?startPosition = null,
            double horizontalPositionProportion = 0.5
            )
        {
            if (sourceInstances == null)
            {
                return(null);
            }

            Point pos;

            if (startPosition == null)
            {
                pos = new Point();
                int shapesWidth = diagramDisplay.Width - (2 * diagramDisplay.GetDiagramPosition().X);
                pos.X = (int)(shapesWidth * horizontalPositionProportion);
                pos.Y = diagramDisplay.GetDiagramOffset().Y + (diagramDisplay.Height / 4);
            }
            else
            {
                pos = (Point)startPosition;
            }

            List <FilterShape> result = new List <FilterShape>();

            for (int i = 0; i < numberOfCopies; i++)
            {
                foreach (IOutputFilterModuleInstance instance in sourceInstances)
                {
                    FilterShape newShape = _CreateNewFilterInstanceAndShape(instance.TypeId, false, instance.ModuleData);
                    newShape.ModuleDataUpdated();

                    newShape.X = pos.X;
                    newShape.Y = pos.Y;

                    pos.Y += newShape.Height + SHAPE_VERTICAL_SPACING;

                    // save the new shape position in the application data references
                    FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();
                    position.xPositionProportion = (double)newShape.X / _previousDiagramWidth;
                    position.yPosition           = newShape.Y;
                    _applicationData.FilterSetupFormShapePositions[newShape.FilterInstance.InstanceId] = position;

                    result.Add(newShape);
                }
            }

            //assume we made changes since we added shapes
            _changesMade = true;
            return(result);
        }
示例#4
0
        public void ReadData(int dataVersion, XElement rootElement)
        {
            if (dataVersion > DATA_FORMAT_VERSION_NUMBER)
            {
                Logging.Error("VixenApplication: error reading application data; given data version was too high: " +
                              dataVersion);
                return;
            }

            // recent sequences: in all data formats
            XElement recentSequences = rootElement.Element("RecentSequences");

            if (recentSequences != null)
            {
                RecentSequences = new List <string>();
                foreach (XElement element in recentSequences.Elements("SequenceFile"))
                {
                    RecentSequences.Add(element.Value);
                }
            }

            // filter shape positions: in data versions 2+
            if (dataVersion >= 2)
            {
                XElement filterShapePositionsElement = rootElement.Element("FilterShapePositions");
                if (filterShapePositionsElement != null)
                {
                    FilterSetupFormShapePositions = new Dictionary <Guid, FilterSetupFormShapePosition>();
                    foreach (XElement element in filterShapePositionsElement.Elements("FilterPosition"))
                    {
                        FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();
                        position.xPositionProportion = double.Parse(element.Element("xPositionProportion").Value);
                        position.yPosition           = int.Parse(element.Element("yPosition").Value);
                        FilterSetupFormShapePositions.Add((Guid)element.Attribute("FilterId"), position);
                    }
                }
            }

            // filter setup form HQ rendering added in data v3
            if (dataVersion >= 3)
            {
                XElement element = rootElement.Element("FilterSetupFormHighQualityRendering");
                if (element != null)
                {
                    FilterSetupFormHighQualityRendering = Boolean.Parse(element.Attribute("value").Value);
                }
            }
        }
示例#5
0
        public void ReadData(int dataVersion, XElement rootElement)
        {
            if (dataVersion > DATA_FORMAT_VERSION_NUMBER) {
                Logging.Error("VixenApplication: error reading application data; given data version was too high: " +
                                          dataVersion);
                return;
            }

            // recent sequences: in all data formats
            XElement recentSequences = rootElement.Element("RecentSequences");
            if (recentSequences != null) {
                RecentSequences = new List<string>();
                foreach (XElement element in recentSequences.Elements("SequenceFile")) {
                    RecentSequences.Add(element.Value);
                }
            }

            // filter shape positions: in data versions 2+
            if (dataVersion >= 2) {
                XElement filterShapePositionsElement = rootElement.Element("FilterShapePositions");
                if (filterShapePositionsElement != null) {
                    FilterSetupFormShapePositions = new Dictionary<Guid, FilterSetupFormShapePosition>();
                    foreach (XElement element in filterShapePositionsElement.Elements("FilterPosition")) {
                        FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();
                        position.xPositionProportion = double.Parse(element.Element("xPositionProportion").Value);
                        position.yPosition = int.Parse(element.Element("yPosition").Value);
                        FilterSetupFormShapePositions.Add((Guid) element.Attribute("FilterId"), position);
                    }
                }
            }

            // filter setup form HQ rendering added in data v3
            if (dataVersion >= 3) {
                XElement element = rootElement.Element("FilterSetupFormHighQualityRendering");
                if (element != null) {
                    FilterSetupFormHighQualityRendering = Boolean.Parse(element.Attribute("value").Value);
                }
            }
        }
        private void _UpdateFilterPositionDataForFilter(FilterShape filterShape)
        {
            FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();
            position.xPositionProportion = (double)filterShape.X / _previousDiagramWidth;
            position.yPosition = filterShape.Y;

            _applicationData.FilterSetupFormShapePositions[filterShape.FilterInstance.InstanceId] = position;
        }
        private void _ResizeAndPositionFilterShapes(int oldDiagramWidth, int newDiagramWidth)
        {
            diagramDisplay.DoSuspendUpdate();

            double defaultXPositionProportion = 0.5;
            int y = SHAPE_Y_TOP;

            foreach (FilterShape filterShape in _filterShapes) {
                filterShape.Width = SHAPE_FILTERS_WIDTH;
                filterShape.Height = SHAPE_FILTERS_HEIGHT;

                FilterSetupFormShapePosition position = null;
                bool updatePosition = true;

                // if the filtershape is unpositioned, it's either first load (nothing positioned yet), or maybe new?
                // look it up in the application data for a position, otherwise default it.
                // (same if there's no old diagram width given; we'd have nothing to proportion from!)
                if ((filterShape.X <= 0 && filterShape.Y <= 0) || oldDiagramWidth <= 0) {
                    if (_applicationData.FilterSetupFormShapePositions.TryGetValue(filterShape.FilterInstance.InstanceId, out position)) {
                        updatePosition = false;
                    } else {
                        position = new FilterSetupFormShapePosition();
                        position.xPositionProportion = defaultXPositionProportion;
                        position.yPosition = y;

                        // because we've used a default position, increment the default Y position
                        y += filterShape.Height + SHAPE_VERTICAL_SPACING;
                    }
                } else {
                    position = new FilterSetupFormShapePosition();
                    position.xPositionProportion = (double)filterShape.X / oldDiagramWidth;
                    position.yPosition = filterShape.Y;
                }

                filterShape.X = (int)(newDiagramWidth * position.xPositionProportion);
                filterShape.Y = position.yPosition;

                if (updatePosition) {
                    _applicationData.FilterSetupFormShapePositions[filterShape.FilterInstance.InstanceId] = position;
                }
            }

            _previousDiagramWidth = newDiagramWidth;

            diagramDisplay.DoResumeUpdate();
        }
        public IEnumerable<FilterShape> DuplicateFilterInstancesToShapes(
            IEnumerable<IOutputFilterModuleInstance> sourceInstances,
            int numberOfCopies,
            Point? startPosition = null,
            double horizontalPositionProportion = 0.5
            )
        {
            if (sourceInstances == null)
                return null;

            Point pos;
            if (startPosition == null) {
                pos = new Point();
                int shapesWidth = diagramDisplay.Width - (2 * diagramDisplay.GetDiagramPosition().X);
                pos.X = (int)(shapesWidth * horizontalPositionProportion);
                pos.Y = diagramDisplay.GetDiagramOffset().Y + (diagramDisplay.Height / 4);
            } else {
                pos = (Point)startPosition;
            }

            List<FilterShape> result = new List<FilterShape>();

            for (int i = 0; i < numberOfCopies; i++) {
                foreach (IOutputFilterModuleInstance instance in sourceInstances) {
                    FilterShape newShape = _CreateNewFilterInstanceAndShape(instance.TypeId, false, instance.ModuleData);
                    newShape.ModuleDataUpdated();

                    newShape.X = pos.X;
                    newShape.Y = pos.Y;

                    pos.Y += newShape.Height + SHAPE_VERTICAL_SPACING;

                    // save the new shape position in the application data references
                    FilterSetupFormShapePosition position = new FilterSetupFormShapePosition();
                    position.xPositionProportion = (double)newShape.X / _previousDiagramWidth;
                    position.yPosition = newShape.Y;
                    _applicationData.FilterSetupFormShapePositions[newShape.FilterInstance.InstanceId] = position;

                    result.Add(newShape);
                }
            }

            //assume we made changes since we added shapes
            _changesMade = true;
            return result;
        }