public void TestTwoTransforms()
        {
            this.Reset();
            ActiveConfig.XmlConfig.Transforms.Add(new TypeConverterTransform()
            {
                ID = "test1"
            });
            ActiveConfig.XmlConfig.Transforms.Add(new TypeConverterTransform()
            {
                ID = "test2"
            });
            string transformString = "test1>>test2";

            TransformParser t = new TransformParser(transformString);

            if (t.HasErrors)
            {
                foreach (TokenError e in t.Errors)
                {
                    Debug.WriteLine("Error: " + e);
                }

                Assert.Fail("The tokenizer returned an unexpected error");
            }

            CollectionAssert.AreEqual(t.Transforms.Select(u => u.ID).ToList(), new List <string>()
            {
                "test1", "test2"
            });
        }
Example #2
0
        public TextureController(Separator root, Separator[] bones, TransformParser parser)
        {
            _root   = root;
            _bones  = bones;
            _parser = parser;

            if (parser == null)
            {
                _textureControl = null;
                return;
            }

            _transformHashtables = parser.getArrayOfTransformHashtables();
            _textureControl      = new TextureControl(parser.getArrayOfAllignmentSteps());
            _fullWristControl    = new FullWristControl();
            _fullWristControl.setupControl(WristFilesystem.LongBoneNames, false);
            _mainControlPanel = new WristPanelLayoutControl();
            _mainControlPanel.addControl(_textureControl);
            _mainControlPanel.addControl(_fullWristControl);

            _editableTransforms = parser.getArrayOfOptimizedBothTransforms();
            setupListeners();

            //set the current editable transform
            _textureControl_SelectedTransformChanged();
        }
        public void TestTwoTransformsWithInvalidOperator3()
        {
            this.Reset();

            ActiveConfig.XmlConfig.Transforms.Add(new TypeConverterTransform()
            {
                ID = "test1"
            });
            ActiveConfig.XmlConfig.Transforms.Add(new TypeConverterTransform()
            {
                ID = "test2"
            });
            string transformString = "test1 test2";

            TransformParser t = new TransformParser(transformString);

            foreach (TokenError e in t.Errors)
            {
                Debug.WriteLine("Error: " + e);
            }

            if (!t.HasErrors)
            {
                Assert.Fail("The tokenizer did not return an error");
            }
        }
Example #4
0
        private void ValidateDeclaration()
        {
            if (this.textMarkerService == null)
            {
                return;
            }

            this.textMarkerService.Clear();

            TransformParser t = new TransformParser(this.baseText);

            foreach (TokenError error in t.Errors)
            {
                this.DisplayValidationError(error.Description, error.ColumnNumber, error.LineNumber);
            }
        }
Example #5
0
        void _textureControl_SelectedTransformChanged()
        {
            int newIndex = _textureControl.selectedTransformIndex;

            //setup control for current transform....
            if (String.IsNullOrEmpty(_editableTransforms[newIndex].boneName))
            {
                _textureControl.clearEditableTransform();
            }
            else
            {
                _textureControl.setEditableTransform(_editableTransforms[newIndex].CenterRotation, _editableTransforms[newIndex].Rotation, _editableTransforms[newIndex].Translation);
            }

            for (int i = 0; i < TextureSettings.ShortBNames.Length; i++)
            {
                //remove the old transform first
                if (_bones[i].hasTransform())
                {
                    _bones[i].removeTransform();
                }

                //try and load transforms
                if (_transformHashtables[newIndex] != null &&
                    _transformHashtables[newIndex].ContainsKey(TextureSettings.TransformBNames[i]))
                {
                    Transform tfrm = new Transform();
                    TransformParser.addTfmMatrixtoTransform((TransformMatrix)_transformHashtables[newIndex][TextureSettings.TransformBNames[i]], tfrm);

                    //now add the new one
                    _bones[i].addTransform(tfrm);
                }

                //check if this is the editable transform
                if (_editableTransforms[newIndex].boneName == TextureSettings.TransformBNames[i])
                {
                    _editableTransforms[newIndex].boneIndex = i;
                }
            }

            //reset the center of the centerball
            resetCenterball();
        }
        public void ParseIsSkippedIfModelIsMissing(TransformParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e)
        {
            "Given a model"
            .x(() =>
            {
                model = new AzureIntegrationServicesModel();
            });

            "And a logger"
            .x(() => logger = new Mock <ILogger>().Object);

            "And a context"
            .x(() => context = new MigrationContext());

            "And a parser"
            .x(() => parser = new TransformParser(model, context, logger));

            "When parsing"
            .x(() => e = Record.Exception(() => parser.Parse()));

            "Then the code should not throw an exception"
            .x(() => e.Should().BeNull());
        }
        public void ConstructWithSuccess(IBizTalkParser parser, ILogger logger, IApplicationModel model, MigrationContext context, Exception e)
        {
            "Given a parser"
            .x(() => parser.Should().BeNull());

            "And a logger"
            .x(() => logger = new Mock <ILogger>().Object);

            "And a model"
            .x(() => model = new AzureIntegrationServicesModel());

            "And a context"
            .x(() => context = new MigrationContext());

            "When constructing"
            .x(() => e = Record.Exception(() => parser = new TransformParser(model, context, logger)));

            "Then the parser constructor should succeed"
            .x(() =>
            {
                e.Should().BeNull();
                parser.Should().NotBeNull();
            });
        }
Example #8
0
        private CT run()
        {
            _bones       = new Separator[TextureSettings.ShortBNames.Length];
            _subjectPath = textBoxSubjectDirectory.Text.Trim();

            //TODO: Figure out the image type....
            parseCropValues();

            CT mri;

            //check if we have this MRI saved!!!, dirty cache
            //TODO: Check if the crop values are compatable!!!
            if (false && _LastImagePath.ToLower().Equals(textBoxImageFile.Text.Trim().ToLower()))
            {
                mri = _LastMRI;
            }
            else
            {
                //pass crop values now, for faster read :)
                mri = CT.SmartLoad(textBoxImageFile.Text);
                mri.setCrop(_minX, _maxX, _minY, _maxY, _minZ, _maxZ);
                if (mri.Layers == 1)  //the default case, we want to load the only layer, echo 0
                {
                    mri.loadImageData();
                }
                else //for other cases, we should try and load layer 5, the layer used by the Wrist Registration Code.
                {
                    mri.loadImageData(5); //TODO: Option for loading different image layers, check for at least 6, etc.
                }
                _LastMRI       = mri;
                _LastImagePath = textBoxImageFile.Text.Trim(); //save filename, to use in cache
            }

            Byte[][] voxels = mri.getCroppedRegionScaledToBytes((mri.Layers == 1) ? 0 : 5);
            int      min    = 1000;
            int      max    = -10;

            for (int i = 0; i < voxels[0].Length; i++)
            {
                if (voxels[0][i] < min)
                {
                    min = voxels[0][i];
                }
                if (voxels[0][i] > max)
                {
                    max = voxels[0][i];
                }
            }

            Hashtable transforms = null;

            _transformParser = null;
            if (File.Exists(textBoxKinematicFilename.Text))
            {
                switch (_kinematicFileType)
                {
                case KinematicFileTypes.AUTO_REGISTR:
                    _transformParser = new TransformParser(textBoxKinematicFilename.Text);
                    transforms       = _transformParser.getFinalTransforms();
                    break;

                case KinematicFileTypes.OUT_RT:
                    throw new NotImplementedException("Can't yet read OutRT files");

                case KinematicFileTypes.MOTION:
                    throw new NotImplementedException("Can't yet read Motion files");
                }
            }

            //lets load each bone
            for (int i = 0; i < TextureSettings.ShortBNames.Length; i++)
            {
                double[][] pts = DatParser.parseDatFile(getBoneFileName(TextureSettings.ShortBNames[i]));
                _bones[i] = Texture.createPointsFileObject(pts, TextureSettings.BoneColors[i]);
                //try and load transforms
                if (transforms != null && transforms.ContainsKey(TextureSettings.TransformBNames[i]))
                {
                    Transform tfrm = new Transform();
                    TransformParser.addTfmMatrixtoTransform((TransformMatrix)transforms[TextureSettings.TransformBNames[i]], tfrm);
                    _bones[i].addTransform(tfrm);
                }
                _root.addChild(_bones[i]);
            }

            _texture = new Texture(_side == WristFilesystem.Sides.LEFT ? Texture.Sides.LEFT : Texture.Sides.RIGHT,
                                   mri.Cropped_SizeX, mri.Cropped_SizeY, mri.Cropped_SizeZ, mri.voxelSizeX, mri.voxelSizeY, mri.voxelSizeZ);
            Separator plane1 = _texture.makeDragerAndTexture(voxels, Texture.Planes.XY_PLANE);
            Separator plane2 = _texture.makeDragerAndTexture(voxels, Texture.Planes.YZ_PLANE);

            _root.addChild(plane1);
            _root.addChild(plane2);
            _root.addChild(_texture.createKeyboardCallbackObject(_viewer.Parent_HWND));

            //returning mri in order to pass it into the texture controller, to contrust a texture for volume rendering
            return(mri);
        }
        public void ParseFailsWhenTransformDefinitionIsMissing(TransformParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, ParsedBizTalkApplicationGroup group, Exception e)
        {
            var missingResourceDefinitionKey = "missingResourceDefinitionKey";

            "Given a model with a transform and missing its definition"
            .x(() =>
            {
                model = new AzureIntegrationServicesModel();
                group = new ParsedBizTalkApplicationGroup();
                model.MigrationSource.MigrationSourceModel = group;

                var msiContainer = new ResourceContainer()
                {
                    Key = "TestMsi.Key", Name = "TestMsi", Type = ModelConstants.ResourceContainerMsi, ContainerLocation = @"C:\Test\Test.msi"
                };
                model.MigrationSource.ResourceContainers.Add(msiContainer);

                var cabContainer = new ResourceContainer()
                {
                    Key = "TestCab.Key", Name = "TestCab", Type = ModelConstants.ResourceContainerCab, ContainerLocation = @"C:\Test\Test.CAB"
                };
                msiContainer.ResourceContainers.Add(cabContainer);

                var asmContainer = new ResourceContainer()
                {
                    Key = "TestAssembly.Key", Name = "TestAssembly", Type = ModelConstants.ResourceContainerAssembly, ContainerLocation = @"C:\Test\Test.dll"
                };
                cabContainer.ResourceContainers.Add(asmContainer);

                var transformResourceDefinition = new ResourceDefinition()
                {
                    Key  = "transformDefinitionKey",
                    Name = "transformName",
                    Type = ModelConstants.ResourceDefinitionMap
                };

                asmContainer.ResourceDefinitions.Add(transformResourceDefinition);

                var application = new BizTalkApplication()
                {
                    Name = "ApplicationOne"
                };

                var transform = new Types.Entities.Transform
                {
                    Name = "transformName",
                    ResourceContainerKey  = asmContainer.Key,
                    ResourceDefinitionKey = missingResourceDefinitionKey
                };

                application.Transforms.Add(transform);

                group.Applications.Add(
                    new ParsedBizTalkApplication
                {
                    Application = application
                });
            });

            "And a logger"
            .x(() => logger = new Mock <ILogger>().Object);

            "And a context"
            .x(() => context = new MigrationContext());

            "And a parser"
            .x(() => parser = new TransformParser(model, context, logger));

            "When parsing"
            .x(() => e = Record.Exception(() => parser.Parse()));

            "Then the code should not throw an exception"
            .x(() => e.Should().BeNull());

            "And there should be an error logged"
            .x(() =>
            {
                context.Errors.Should().NotBeNull();
                context.Errors.Should().HaveCount(1);
                context.Errors[0].Message.Should().Contain(missingResourceDefinitionKey);
                context.Errors[0].Message.Should().Contain(ModelConstants.ResourceDefinitionMap);
            });
        }
        public void ParseTransformWithSuccess(TransformParser parser, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, ParsedBizTalkApplicationGroup group, Exception e)
        {
            "Given a model with a transform"
            .x(() =>
            {
                model = new AzureIntegrationServicesModel();
                group = new ParsedBizTalkApplicationGroup();
                model.MigrationSource.MigrationSourceModel = group;

                var msiContainer = new ResourceContainer()
                {
                    Key = "TestMsi.Key", Name = "TestMsi", Type = ModelConstants.ResourceContainerMsi, ContainerLocation = @"C:\Test\Test.msi"
                };
                model.MigrationSource.ResourceContainers.Add(msiContainer);

                var cabContainer = new ResourceContainer()
                {
                    Key = "TestCab.Key", Name = "TestCab", Type = ModelConstants.ResourceContainerCab, ContainerLocation = @"C:\Test\Test.CAB"
                };
                msiContainer.ResourceContainers.Add(cabContainer);

                var asmContainer = new ResourceContainer()
                {
                    Key = "TestAssembly.Key", Name = "TestAssembly", Type = ModelConstants.ResourceContainerAssembly, ContainerLocation = @"C:\Test\Test.dll"
                };
                cabContainer.ResourceContainers.Add(asmContainer);

                var transformResourceDefinition = new ResourceDefinition()
                {
                    Key  = "transformDefinitionKey",
                    Name = "transformName",
                    Type = ModelConstants.ResourceDefinitionMap
                };

                asmContainer.ResourceDefinitions.Add(transformResourceDefinition);

                var application = new BizTalkApplication()
                {
                    Name = "ApplicationOne"
                };

                var transform = new Types.Entities.Transform
                {
                    Name = "transformName",
                    ResourceContainerKey  = asmContainer.Key,
                    ResourceDefinitionKey = transformResourceDefinition.Key
                };

                application.Transforms.Add(transform);

                group.Applications.Add(
                    new ParsedBizTalkApplication
                {
                    Application = application
                });
            });

            "And a logger"
            .x(() => logger = new Mock <ILogger>().Object);

            "And a context"
            .x(() => context = new MigrationContext());

            "And a parser"
            .x(() => parser = new TransformParser(model, context, logger));

            "When parsing"
            .x(() => e = Record.Exception(() => parser.Parse()));

            "Then the code should not throw an exception"
            .x(() => e.Should().BeNull());

            "And the resources should be set."
            .x(() =>
            {
                var appModel = (AzureIntegrationServicesModel)model;

                // Check the transform resource has been created.
                appModel.MigrationSource.ResourceContainers[0].ResourceContainers[0].ResourceContainers[0].ResourceDefinitions[0].Resources.Should().NotBeNullOrEmpty();
                appModel.MigrationSource.ResourceContainers[0].ResourceContainers[0].ResourceContainers[0].ResourceDefinitions[0].Resources.Should().HaveCount(1);
                var transformResourceDefinition = appModel.MigrationSource.ResourceContainers[0].ResourceContainers[0].ResourceContainers[0].ResourceDefinitions[0];
                var transformResource           = transformResourceDefinition.Resources[0];

                // Get the transform.
                var transform = group.Applications[0].Application.Transforms[0];

                // Validate the transform resource.
                transformResource.Should().NotBeNull();
                transformResource.Key.Should().Be(transformResourceDefinition.Key + ":map");
                transformResource.Name.Should().Be(transform.Name);
                transformResource.Type.Should().Be(ModelConstants.ResourceMap);
                transformResource.Description.Should().Be(transform.FullName);

                transform.Resource.Should().Be(transformResource);                            // The pointer to the resource should be set.
                transformResource.ParentRefId.Should().Be(transformResourceDefinition.RefId); // The parent ref ID should be set.
                transformResource.SourceObject.Should().Be(transform);                        // The resource should have a pointer to the source object.
            });
        }
Example #11
0
        CT mri;//for getting the texture info

        public TextureController(Separator root, Separator[] bones, TransformParser parser, Boolean IsVolumeRenderEnabled)
        {
            isVolumeRenderEnabled = IsVolumeRenderEnabled;
            _root   = root;
            _bones  = bones;
            _parser = parser;

            currTranslation = new float[3];
            currRotation    = new float[3];


            currTranslation[0] = 0; currRotation[0] = 0;
            currTranslation[1] = 0; currRotation[1] = 0;
            currTranslation[2] = 0; currRotation[2] = 0;

            if (parser == null)
            {
                _textureControl = null;
                return;
            }

            _transformHashtables = parser.getArrayOfTransformHashtables();
            _textureControl      = new TextureControl(parser.getArrayOfAllignmentSteps());
            if (!isVolumeRenderEnabled)
            {
                _textureControl.disableVolumeItems();
            }
            _fullWristControl = new FullWristControl();
            _fullWristControl.setupControl(WristFilesystem.LongBoneNames, false);
            _mainControlPanel = new WristPanelLayoutControl();
            _mainControlPanel.addControl(_textureControl);
            _mainControlPanel.addControl(_fullWristControl);

            _editableTransforms = parser.getArrayOfOptimizedBothTransforms();
            setupListeners();

            //set the current editable transform
            _textureControl_SelectedTransformChanged();


            /////////////////////////////////////


            float[] center    = _textureControl.getCurrentCenterOfRotation();
            float[] translate = _textureControl.getCurrentTranslation();
            float[] rotation  = _textureControl.getCurrentRotation();

            currTranslation[0] = translate[0]; currRotation[0] = rotation[0];
            currTranslation[1] = translate[1]; currRotation[1] = rotation[1];
            currTranslation[2] = translate[2]; currRotation[2] = rotation[2];

            _rootSeparator = new Separator();
            _rootSeparator.reference();
            root.addChild(_rootSeparator);
            _centerballVisible = true;
            Scale myScale = new Scale();

            _centerballDragger = new CenterballDragger();
            //get the center of rotation from the form elements
            center[0] += translate[0];
            center[1] += translate[1];
            center[2] += translate[2];



            _rootSeparator.addNode(myScale);
            scaleValues    = new float[3];
            scaleValues[0] = scaleValues[1] = scaleValues[2] = 10;
            myScale.setScaleFactor(scaleValues[0], scaleValues[1], scaleValues[2]);

            _centerballDragger.setRotation(rotation[0], rotation[1], rotation[2]);
            _centerballDragger.setTranslation(center[0] / scaleValues[0], center[1] / scaleValues[1], center[2] / scaleValues[2]);


            _rootSeparator.addChild(_centerballDragger);
            beginningTranslation = _textureControl.getCurrentTranslation();

            CenterballDragger.delFunc d = new CenterballDragger.delFunc(_textureControl_EditableTransformChangedFromCenterball);
            _centerballDragger.addCB(d);

            wasRotated();
        }
 public static TransformOperations Parse(string s)
 {
     return(TransformParser.Parse(s));
 }