internal void Generate () { using (var tagsConnection = new SqlConnection(_settings.DatabaseConnectionString)) using (var postsConnection = new SqlConnection (_settings.DatabaseConnectionString)) { tagsConnection.Open (); postsConnection.Open (); var tagRepository = new TagRepository (tagsConnection); var postRepository = new PostRepository (postsConnection); #region Phase 1: Convert Posts (collection items) into temporary raw artifacts CleanWorkingFolder (); CreateRawItems (postRepository); GeneratePostImageResizes (postRepository); #endregion #region Phase 2: Slice Post (collection item) images to create final .dzi files and sub-folders GenerateImageSlices (postRepository); GenerateImageManifests (postRepository); #endregion #region Phase 3: Convert Tags (collections) into final .cxml and .dzc files AssembleCollections (tagRepository, postRepository); #endregion } }
public static int Main (string[] args) { // TODO: initialize Settings instance from app.config and/or command-line var settings = new Settings { ItemImageSize = new Size(800, 400), TileSize = 254, TileOverlap = 1, /* DatabaseConnectionString = "Data Source=Blackberry;Initial Catalog=SuperUser;Integrated Security=True", SiteDomain = "superuser.com", MaximumNumberOfItems = 185520, HighestId = 207698, */ DatabaseConnectionString = "Data Source=Blackberry;Initial Catalog=Photography;Integrated Security=True", SiteDomain = "photo.stackexchange.com", MaximumNumberOfItems = 936, HighestId = 4479, PostImageEncoding = ImageFormat.Png, }; using (var tagsConnection = new SqlConnection(settings.DatabaseConnectionString)) using (var postsConnection = new SqlConnection (settings.DatabaseConnectionString)) { tagsConnection.Open (); postsConnection.Open (); var tagRepository = new TagRepository (tagsConnection); var postRepository = new PostRepository (postsConnection); #region Phase 1: Convert Posts (collection items) into temporary raw artifacts CleanWorkingFolder (); CreateRawItems (settings, postRepository); GeneratePostImageResizes (settings, postRepository); #endregion #region Phase 2: Slice Post (collection item) images to create final .dzi files and sub-folders GenerateImageSlices (settings, postRepository); GenerateImageManifests (settings, postRepository); #endregion #region Phase 3: Convert Tags (collections) into final .cxml and .dzc files AssembleCollections (settings, tagRepository, postRepository); #endregion } return 0; }
internal void AssembleCollections (TagRepository tagRepository, PostRepository postRepository) { var dzc = new DeepZoomCollection (_settings); var tags = tagRepository.RetrieveTags (); foreach (var tag in tags) { var postIds = new List<int> (postRepository.RetrievePostIds (tag.Id)); dzc.PivotizeTag (tag, postIds); dzc.CreateCollectionManifest (tag, postIds); dzc.CreateCollectionTiles (tag, postIds); } }
internal static void AssembleCollections (Settings settings, TagRepository tagRepository, PostRepository postRepository) { var outputPath = Path.GetFullPath (OutputFolderName); var imageFormat = settings.PostImageEncoding; var imageFormatName = imageFormat.ToString ().ToLower (); var fileNameIdFormat = settings.FileNameIdFormat; var width = settings.ItemImageSize.Width; var height = settings.ItemImageSize.Height; var tags = tagRepository.RetrieveTags (); foreach (var tag in tags) { // TODO: consider using postIds, currently computed below PivotizeTag (postRepository, tag, settings); var postIds = new List<int> (postRepository.RetrievePostIds (tag.Id)); var relativePathToCollectionManifest = Tag.ComputeBinnedPath (tag.Name, ".dzc"); var absolutePathToCollectionManifest = Path.Combine (outputPath, relativePathToCollectionManifest); var relativePathToRoot = relativePathToCollectionManifest.RelativizePath (); CreateCollectionManifest (postIds, absolutePathToCollectionManifest, imageFormatName, relativePathToRoot, fileNameIdFormat, width, height); CreateCollectionTiles (tag, outputPath, postIds, imageFormat, fileNameIdFormat, outputPath); } }