Example #1
0
        public TreeChartOptions()
        {
            FamilyVisible     = true;
            NameVisible       = true;
            PatronymicVisible = true;
            NickVisible       = true;
            DiffLines         = true;

            BirthDateVisible = true;
            DeathDateVisible = true;
            OnlyYears        = true;

            Kinship                      = false;
            PortraitsVisible             = true;
            DefaultPortraits             = false;
            SignsVisible                 = false;
            CertaintyIndexVisible        = false;
            TraceSelected                = true;
            ChildlessExclude             = false;
            Decorative                   = true;
            InvertedTree                 = false;
            MarriagesDates               = false;
            ShowPlaces                   = false;
            HideUnknownSpouses           = false;
            DottedLinesOfAdoptedChildren = false;
            SeparateDatesAndPlacesLines  = false;
            BoldNames                    = false;
            SeparateDepth                = false;

            AutoAlign   = true;
            BorderStyle = GfxBorderStyle.None;
            DeepMode    = DeepMode.None;

            MaleColor      = ChartRenderer.GetColor(MALE_COLOR);
            FemaleColor    = ChartRenderer.GetColor(FEMALE_COLOR);
            UnkSexColor    = ChartRenderer.GetColor(UNK_SEX_COLOR);
            UnHusbandColor = ChartRenderer.GetColor(UN_HUSBAND_COLOR);
            UnWifeColor    = ChartRenderer.GetColor(UN_WIFE_COLOR);

            DefFontName  = AppHost.GfxProvider.GetDefaultFontName();
            DefFontSize  = 8;
            DefFontColor = ChartRenderer.GetColor(BSDColors.Black);
            DefFontStyle = BSDTypes.FontStyle.None;

            BranchDistance = TreeChartModel.DEF_BRANCH_DISTANCE;
            LevelDistance  = TreeChartModel.DEF_LEVEL_DISTANCE;
            Margins        = TreeChartModel.DEF_MARGINS;
            SpouseDistance = TreeChartModel.DEF_SPOUSE_DISTANCE;
        }
Example #2
0
        private void DrawDeep(DeepMode mode, int spx, int spy)
        {
            try {
                using (var deepModel = new TreeChartModel()) {
                    deepModel.Assign(fModel);
                    deepModel.SetRenderer(fRenderer);
                    deepModel.DepthLimitAncestors   = 2;
                    deepModel.DepthLimitDescendants = 2;
                    deepModel.GenChart(fSelected.Rec, TreeChartKind.ckBoth, true);
                    deepModel.RecalcChart(true);

                    var pers = deepModel.FindPersonByRec(fSelected.Rec);
                    if (pers == null)
                    {
                        Logger.WriteError("TreeChartBox.DrawDeep(): unexpected failure");
                        return;
                    }

                    int dmX = (spx + (fSelected.PtX - pers.PtX));
                    int dmY = (spy + (fSelected.PtY - pers.PtY));
                    deepModel.SetOffsets(dmX, dmY);
                    deepModel.VisibleArea = ExtRect.CreateBounds(0, 0, deepModel.ImageWidth, deepModel.ImageHeight);

                    switch (mode)
                    {
                    case DeepMode.Background:
                        fRenderer.SetTranslucent(0.75f);
                        break;

                    case DeepMode.Foreground:
                        fRenderer.SetTranslucent(0.25f);
                        IPen   xpen   = fRenderer.CreatePen(ChartRenderer.GetColor(BSDColors.Black), 2.0f);
                        IColor bColor = ChartRenderer.GetColor(BSDColors.White);
                        fRenderer.DrawRoundedRectangle(xpen, bColor, dmX, dmY, deepModel.ImageWidth, deepModel.ImageHeight, 6);
                        fRenderer.SetTranslucent(0.00f);
                        break;
                    }

                    deepModel.Draw(ChartDrawMode.dmStatic);
                }
            } catch (Exception ex) {
                Logger.WriteError("TreeChartBox.DrawDeep()", ex);
            }
        }
			/// <summary>
			/// 
			/// </summary>
			private void DoAddFolder(
				DirectoryInfo baseFolderPath,
				DirectoryInfo currentFolderPath,
				IZipEventSink eventSink,
				DeepMode deep,
				PathSaveMode pathSaveMode,
				string relativeRootPostfix )
			{
				Debug.Assert(
					string.IsNullOrEmpty( relativeRootPostfix ) ||
					pathSaveMode == PathSaveMode.Relative );

				if ( eventSink == null ||
					eventSink.OnBeforeEnterFolder( this, currentFolderPath ) )
				{
					// All files.
					foreach ( FileInfo filePath
						in currentFolderPath.GetFiles() )
					{
						if ( eventSink == null ||
							eventSink.OnBeforeAddFile( this, filePath ) )
						{
							string pathSaveValue;
							switch ( pathSaveMode )
							{
								case PathSaveMode.Absolute:
									// Winzip always displays absolute paths with
									// the drive resp. server+share removed, so pack
									// it here in this way, too.
									pathSaveValue =
										PathHelper.SplitPath(
										filePath.FullName ).DirectoryAndNameWithExtension;
									break;
								case PathSaveMode.Relative:
									pathSaveValue =
										PathHelper.GetRelativePath(
										baseFolderPath.FullName,
										filePath.FullName );

									if ( !string.IsNullOrEmpty( relativeRootPostfix ) )
									{
										pathSaveValue = PathHelper.Combine(
											relativeRootPostfix,
											pathSaveValue );
									}
									break;
								case PathSaveMode.None:
									pathSaveValue = filePath.Name;
									break;
								default:
									Debug.Assert( false );
									pathSaveValue = filePath.Name;
									break;
							}

							using ( FileStream fs = new FileStream(
								filePath.FullName,
								FileMode.Open,
								FileAccess.Read,
								FileShare.Read ) )
							using ( BinaryReader r = new BinaryReader( fs ) )
							{
								byte[] buffer = new byte[fs.Length];
								fs.Read( buffer, 0, buffer.Length );

								AddBytes( buffer, pathSaveValue );
							}
						}
					}

					// --

					if ( deep == DeepMode.Deep )
					{
						// All folders.
						foreach ( DirectoryInfo folderPath in currentFolderPath.GetDirectories() )
						{
							DoAddFolder(
								baseFolderPath,
								folderPath,
								eventSink,
								deep,
								pathSaveMode,
								relativeRootPostfix );
						}
					}
				}
			}
			/// <summary>
			/// Add multiple files from the given folder, recursively.
			/// The filepaths are added relatively to the given folder path.
			/// </summary>
			public void AddFolder(
				DirectoryInfo folderPath,
				IZipEventSink eventSink,
				DeepMode deep,
				PathSaveMode pathSaveMode,
				string relativeRootPostfix )
			{
				DoAddFolder(
					folderPath,
					folderPath,
					eventSink,
					deep,
					pathSaveMode,
					relativeRootPostfix );
			}
			/// <summary>
			/// Add multiple files from the given folder, recursively.
			/// The filepaths are added relatively to the given folder path.
			/// </summary>
			public void AddFolder(
				DirectoryInfo folderPath,
				IZipEventSink eventSink,
				DeepMode deep,
				PathSaveMode pathSaveMode )
			{
				DoAddFolder(
					folderPath,
					folderPath,
					eventSink,
					deep,
					pathSaveMode,
					null );
			}
			/// <summary>
			/// Add multiple files from the given folder, recursively.
			/// The filepaths are added relatively to the given folder path.
			/// </summary>
			public void AddFolder(
				DirectoryInfo folderPath,
				IZipEventSink eventSink,
				DeepMode deep )
			{
				AddFolder(
					folderPath,
					eventSink,
					deep,
					PathSaveMode.Relative );
			}