public CubismRenderer(CubismModel model, IEnumerable <Texture> textures)
        {
            this.model    = model;
            this.textures = textures.ToList();

            foreach (var drawable in model.Drawables)
            {
                if (drawable.Masks.Length <= 0)
                {
                    drawableClippingContexts.Add(null);
                    continue;
                }

                ClippingContext newClippingContext = null;
                int[]           maskIds            = drawable.Masks.Distinct().OrderBy(x => x).ToArray();
                foreach (var target in allClippingContexts)
                {
                    if (maskIds.SequenceEqual(target.ClippingIds))
                    {
                        newClippingContext = target;
                        break;
                    }
                }

                if (newClippingContext == null)
                {
                    newClippingContext = new ClippingContext(maskIds);
                    allClippingContexts.Add(newClippingContext);
                }

                newClippingContext.ClippedDrawables.Add(drawable);
                drawableClippingContexts.Add(newClippingContext);
            }
        }
Ejemplo n.º 2
0
        private async Task <bool> uploadToServer(List <ClippingItem> clippings)
        {
            var offset = 0;
            var db     = new ClippingContext();

            while (offset < clippings.Count())
            {
                var clips      = clippings.Skip(offset).Take(20).ToList();
                var uploadData = new List <Model.HttpDataModel.ClippingItemRequest>();
                foreach (var clip in clips)
                {
                    var req = new Model.HttpDataModel.ClippingItemRequest {
                        Title    = clip.Title,
                        Content  = clip.Content,
                        Location = clip.Location,
                        BookID   = "-1"
                    };

                    var isInDB = db.Clippings.Any(x => x.DataId == clip.DataId);
                    if (!isInDB)
                    {
                        uploadData.Add(req);
                    }
                }

                await this.upload(uploadData);

                offset += 20;
            }
            db.Dispose();
            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes the singleton application object.  This is the first line of authored code
        /// executed, and as such is the logical equivalent of main() or WinMain().
        /// </summary>
        public App()
        {
            //this.InitializeComponent();
            this.Suspending += OnSuspending;

            using (var db = new ClippingContext())
            {
                db.Migrate();
            }
            SentryLogger.init();
        }
        private RectangleF calcClippedDrawTotalBounds(ClippingContext context)
        {
            var result = RectangleF.Empty;

            foreach (var drawable in context.ClippedDrawables)
            {
                if (!drawable.Bounds.IsEmpty)
                {
                    result = RectangleF.Union(result, drawable.Bounds);
                }
            }

            return(result);
        }
Ejemplo n.º 5
0
        private async void Grid_Drop(object sender, DragEventArgs e)
        {
            if (Config.JWT == null)
            {
                var loginAlert = new Dialogs.LoginAlert();

                await loginAlert.ShowAsync();

                return;
            }
            var storageItems = await e.DataView.GetStorageItemsAsync();

            StorageFile file     = storageItems.First() as StorageFile;
            var         fileType = file.FileType.ToString().ToLower();

            if (!fileType.Equals(".txt"))
            {
                ContentDialog fileTypeAlert = new ContentDialog {
                    Title           = "兄弟,我要的是 txt 文件啊",
                    Content         = "你这个文件类型不对,把 kindle 里的 clipings.txt 丢给我啊喂! ",
                    CloseButtonText = "老子知道了!",
                };

                await fileTypeAlert.ShowAsync();

                return;
            }

            Debug.WriteLine(file.FileType.ToString());
            var clipItems = await this.FileParser(file);

            await this.uploadToServer(clipItems);

            using (var db = new ClippingContext()) {
                await db.Clippings.AddRangeAsync(clipItems);

                await db.SaveChangesAsync();
            }

            // TODO: progress
            ContentDialog memAlert = new ContentDialog {
                Title           = "完成啦",
                Content         = "哇,加载成功啦。 可以去列表页看你的剪切了",
                CloseButtonText = "老子知道了",
            };

            await memAlert.ShowAsync();
        }
Ejemplo n.º 6
0
 public ClipListObservable()
 {
     this.clippingContext = new ClippingContext();
 }