Пример #1
0
        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
            }
        }
Пример #2
0
        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;
        }
Пример #3
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);
            }
        }
Пример #4
0
        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);
            }
        }