コード例 #1
0
ファイル: PostController.cs プロジェクト: yeganetrn/behlog
        //[HttpGet(Name = MenuRouteName.PostIndex)]
        public async Task <IActionResult> Index(
            string postType,
            string lang    = Language.KEY_fa_IR,
            int?categoryId = null,
            int page       = 1
            )
        {
            var param = new IndexParams <PostIndexFilter> {
                PageSize   = 10,
                PageNumber = page,
                Filter     = new PostIndexFilter {
                    CategoryId   = categoryId,
                    PostTypeSlug = postType,
                },
                LangKey = lang
            };

            var result = await _postService.GetIndexAsync(param);

            var model = result.Adapt <PostIndexViewModel>();

            model.Title = result.PostTypeSlug.GetPostTypeDisplayName();

            return(await Task.FromResult(View(model)));
        }
コード例 #2
0
        public FlannColoredModelPoints(List<Tuple<CvPoint3D64f, CvColor>> modelPoints, IndexParams indexParams, SearchParams searchParams, double colorScale)
        {
            _modelPoints = modelPoints;

            _modelMat = new CvMat(_modelPoints.Count, 6, MatrixType.F32C1);
            unsafe
            {
                float* modelArr = _modelMat.DataSingle;
                foreach (var tuple in _modelPoints)
                {
                    *(modelArr++) = (float)tuple.Item1.X;
                    *(modelArr++) = (float)tuple.Item1.Y;
                    *(modelArr++) = (float)tuple.Item1.Z;
                    *(modelArr++) = (float)(tuple.Item2.R * colorScale / 255);
                    *(modelArr++) = (float)(tuple.Item2.G * colorScale / 255);
                    *(modelArr++) = (float)(tuple.Item2.B * colorScale / 255);
                }
            }
            _colorScale = colorScale;
            _modelDataMat = new Mat(_modelMat);
            _indexParam = indexParams;
            _searchParam = searchParams;
            _indexParam.IsEnabledDispose = false;
            _searchParam.IsEnabledDispose = false;
            _flannIndex = new Index(_modelDataMat, _indexParam);
        }
コード例 #3
0
        public FlannColoredModelPoints(List <Tuple <CvPoint3D64f, CvColor> > modelPoints, IndexParams indexParams, SearchParams searchParams, double colorScale)
        {
            _modelPoints = modelPoints;

            _modelMat = new CvMat(_modelPoints.Count, 6, MatrixType.F32C1);
            unsafe
            {
                float *modelArr = _modelMat.DataSingle;
                foreach (var tuple in _modelPoints)
                {
                    *(modelArr++) = (float)tuple.Item1.X;
                    *(modelArr++) = (float)tuple.Item1.Y;
                    *(modelArr++) = (float)tuple.Item1.Z;
                    *(modelArr++) = (float)(tuple.Item2.R * colorScale / 255);
                    *(modelArr++) = (float)(tuple.Item2.G * colorScale / 255);
                    *(modelArr++) = (float)(tuple.Item2.B * colorScale / 255);
                }
            }
            _colorScale   = colorScale;
            _modelDataMat = new Mat(_modelMat);
            _indexParam   = indexParams;
            _searchParam  = searchParams;
            _indexParam.IsEnabledDispose  = false;
            _searchParam.IsEnabledDispose = false;
            _flannIndex = new Index(_modelDataMat, _indexParam);
        }
コード例 #4
0
        public async Task <IViewComponentResult> InvokeAsync(
            int?categoryId,
            string lang      = Language.KEY_fa_IR,
            bool isComponent = false,
            int pageSize     = 3)
        {
            var indexParam = new IndexParams {
                PageNumber = 1,
                PageSize   = pageSize,
                OrderBy    = "OrderNumber"
            };

            var gallery = await _postService.GetGalleryAsync(
                indexParam,
                categoryId,
                lang,
                isComponent);

            if (gallery == null)
            {
                return(await Task.FromResult(
                           Content(string.Empty)));
            }

            var result = gallery.Adapt <GalleryViewModel>();

            return(await Task.FromResult(
                       View(result)));
        }
コード例 #5
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        public async Task <GalleryDto> GetGalleryAsync(
            IndexParams param,
            int?categoryId   = null,
            string lang      = Language.KEY_fa_IR,
            bool isComponent = false)
        {
            param.CheckArgumentIsNull(nameof(param));
            var postType = await _postTypeRepository
                           .GetBySlugAsync(PostType.GALLERY);

            if (postType == null)
            {
                throw new PostTypeNotFoundException();
            }

            var query = _repository
                        .Query()
                        .IncludeFiles()
                        .Where(_ => _.PostTypeId == postType.Id)
                        .Where(_ => _.Status == PostStatus.Published)
                        .Where(_ => _.PublishDate <= _dateService.UtcNow())
                        .Where(_ => _.Language.LangKey == lang)
                        .Where(_ => _.IsComponent == isComponent);

            if (categoryId.HasValue)
            {
                query = query.Where(_ => _.CategoryId == categoryId);
            }

            query = query.SetOrder(param.OrderBy, !param.OrderDesc);

            if (param.HasPaging)
            {
                query = query
                        .Skip(param.Skip)
                        .Take(param.Take);
            }

            var queryResult = await query.ToListAsync();

            var result = new GalleryDto {
                Posts = queryResult.Adapt <List <PostFileGalleryDto> >()
            };

            foreach (var post in result.Posts)
            {
                post.Files = queryResult.FirstOrDefault(_ => _.Id == post.Id)
                             .PostFiles.OrderBy(_ => _.OrderNum)
                             .Select(_ => _.File)
                             .Adapt <List <PostFileGalleryItemDto> >();
            }

            return(await Task.FromResult(result));
        }
コード例 #6
0
 /// <summary>
 /// Releases managed resources
 /// </summary>
 protected override void DisposeUnmanaged()
 {
     if (detectorPtr == null && ptr != IntPtr.Zero)
     {
         NativeMethods.features2d_FlannBasedMatcher_delete(ptr);
     }
     indexParams  = null;
     searchParams = null;
     ptr          = IntPtr.Zero;
     base.DisposeUnmanaged();
 }
コード例 #7
0
        //internal override IntPtr PtrObj => detectorPtr.CvPtr;

        #region Init & Disposal

        /// <summary>
        ///
        /// </summary>
        /// <param name="indexParams"></param>
        /// <param name="searchParams"></param>
        public FlannBasedMatcher(IndexParams indexParams = null, SearchParams searchParams = null)
        {
            indexParams?.ThrowIfDisposed();
            searchParams?.ThrowIfDisposed();

            IntPtr indexParamsPtr  = indexParams?.PtrObj.CvPtr ?? IntPtr.Zero;
            IntPtr searchParamsPtr = searchParams?.PtrObj.CvPtr ?? IntPtr.Zero;

            ptr = NativeMethods.features2d_FlannBasedMatcher_new(indexParamsPtr, searchParamsPtr);
            this.indexParams  = indexParams;
            this.searchParams = searchParams;
        }
コード例 #8
0
ファイル: PostController.cs プロジェクト: yeganetrn/behlog
        //[HttpGet(Name = "gallery")]
        public async Task <IActionResult> Gallery(int?categoryId, string lang = "fa", int?page = 1)
        {
            var indexParam = new IndexParams {
                PageNumber = page != null ? page.Value : 1,
                PageSize   = 10,
                OrderBy    = "OrderNumber",
                OrderDesc  = false
            };
            var gallery = await _postService
                          .GetGalleryAsync(indexParam, categoryId, lang);

            gallery.Title = "گالری تصاویر";

            var result = gallery.Adapt <GalleryViewModel>();

            return(View(result));
        }
コード例 #9
0
        public async Task <IViewComponentResult> InvokeAsync(
            int?categoryId,
            string lang      = Language.KEY_fa_IR,
            bool isComponent = false,
            int pageSize     = 3,
            string viewName  = "")
        {
            var indexParam = new IndexParams {
                PageNumber = 1,
                PageSize   = pageSize,
                OrderBy    = "ordernum"
            };

            var gallery = await _postService.GetGalleryAsync(
                indexParam,
                categoryId,
                lang,
                isComponent);

            if (gallery == null)
            {
                return(await Task.FromResult(
                           Content(string.Empty)));
            }

            var model = gallery.Adapt <GalleryViewModel>();

            if (viewName.IsNotNullOrEmpty())
            {
                return(await Task.FromResult(
                           View(viewName, model)
                           ));
            }

            return(await Task.FromResult(
                       View(model)));
        }
コード例 #10
0
        public async Task <PostIndexDto> GetIndexAsync(
            IndexParams <PostIndexFilter> param
            )
        {
            param.CheckArgumentIsNull(nameof(param));

            var postType = await _postTypeRepository
                           .GetBySlugAsync(param.Filter.PostTypeSlug);

            if (postType == null)
            {
                throw new PostTypeNotFoundException();
            }

            var lang = await _languageRepository.GetByLangKeyAsync(param.LangKey)
                       ?? await _languageRepository.GetDefaultLanguage();

            var query = _repository.Query();

            query = AddIndexFilter(query, param.Filter, lang);

            var result = new PostIndexDto {
                CategoryId        = param.Filter.CategoryId,
                PostTypeId        = postType.Id,
                PostTypeSlug      = postType.Slug,
                LangKey           = lang.LangKey,
                PageSize          = param.PageSize,
                CurrentPageNumber = param.PageNumber,
                TotalCount        = await query.CountAsync(),
                Categories        = await getCategoryItemsAsync(postType.Id, lang.Id)
            };

            if (result.CategoryId.HasValue)
            {
                result.CategoryTitle = (await _categoryRepository
                                        .FindAsync(result.CategoryId.Value)
                                        ).Title;
            }

            result.Items = await query
                           .Include(_ => _.PostType)
                           .Include(_ => _.Category)
                           .Include(_ => _.Comments)
                           .Include(_ => _.Likes)
                           .Include(_ => _.PostTags)
                           .ThenInclude(_ => _.Tag)
                           .Skip(param.Skip)
                           .Take(param.PageSize)
                           .OrderByDescending(_ => _.Id)
                           .ThenByDescending(_ => _.PublishDate)
                           .Select(_ => new PostIndexItemDto {
                CoverPhoto    = _.CoverPhoto,
                Slug          = _.Slug,
                PublishDate   = _.PublishDate,
                Status        = _.Status,
                Summary       = _.Summary,
                Title         = _.Title,
                UserId        = _.CreatorUserId,
                AltTitle      = _.AltTitle,
                Author        = _.CreatorUser.Title,
                Id            = _.Id,
                PostTypeSlug  = _.PostType.Slug,
                Body          = _.Body,
                CategoryTitle = _.Category != null ? _.Category.Title : string.Empty,
                CommentCount  = _.Comments.Count(),
                IconName      = _.IconName,
                LikeCount     = _.Likes.Count(),
                Tags          = _.PostTags.Select(_ => new PostTagItemDto {
                    Title       = _.Tag.Title,
                    Id          = _.Tag.Id,
                    Description = _.Tag.Description,
                    Slug        = _.Tag.Slug
                })
            }).ToListAsync();

            return(await Task.FromResult(result));
        }
コード例 #11
0
ファイル: FlannBasedMatcher.cs プロジェクト: 0sv/opencvsharp
 /// <summary>
 /// 
 /// </summary>
 /// <param name="indexParams"></param>
 /// <param name="searchParams"></param>
 public FlannBasedMatcher(IndexParams indexParams = null, SearchParams searchParams = null)
 {
     ptr = NativeMethods.features2d_FlannBasedMatcher_new(
         Cv2.ToPtr(indexParams), Cv2.ToPtr(searchParams));
 }
コード例 #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="indexParams"></param>
 /// <param name="searchParams"></param>
 public FlannBasedMatcher(IndexParams indexParams = null, SearchParams searchParams = null)
 {
     ptr = NativeMethods.features2d_FlannBasedMatcher_new(
         Cv2.ToPtr(indexParams), Cv2.ToPtr(searchParams));
 }