コード例 #1
0
        private void ProcessDocument(string path, string tempPath, int width)
        {
            if (File.Exists(path) == false)
            {
                return;
            }

            this.FilePath = path;

            _currentController = null;

            DeleteOldSnapshot();

            string newTempPath = System.IO.Path.Combine(tempPath, Guid.NewGuid().ToString());

            Directory.CreateDirectory(newTempPath);

            foreach (var item in _pptController)
            {
                if (item.Load(path, newTempPath) == true)
                {
                    int         height      = (int)(width * _pptSlideHeightRatio);
                    PPTDocument pptDocument = item.ReadAll(width, height);

                    string txt = Newtonsoft.Json.JsonConvert.SerializeObject(pptDocument);
                    if (string.IsNullOrEmpty(txt) == false)
                    {
                        _snapshotForWindowsPhone = txt;
                        _currentController       = item;

                        break;
                    }
                }
            }
        }
コード例 #2
0
ファイル: PPTController.cs プロジェクト: Dev9er/CSharpStudy
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.PPTController);

            _imageView       = FindViewById <BorderedImageView>(Resource.Id.panoramaImage);
            _txtMemo         = FindViewById <TextView>(Resource.Id.txtMemo);
            _bottomSlideList = FindViewById <BottomHorizontalListView>(Resource.Id.bottomSlideList);

            _ip   = Intent.GetStringExtra("ip");
            _port = Intent.GetStringExtra("port");

            //string document = Intent.GetStringExtra("document");
            string document = App.DocumentText;

            if (string.IsNullOrEmpty(document) == true)
            {
                Intent i = new Intent(this, typeof(MainActivity));

                i.PutExtra("ip", _ip);
                i.PutExtra("port", _port);

                StartActivity(i);
            }

            _pptDocument = Newtonsoft.Json.JsonConvert.DeserializeObject <PPTDocument>(document);

            if (_pptDocument != null)
            {
                LoadDocument();
            }

            StartShow(this.SlideList[0].AnimationCount);
            SetSlide(0);

            _bottomSlideList.Adapter = new BottomItemAdapter(this, Resource.Layout.bottomRow);
            _imageView.SetOnTouchListener(this);
        }
コード例 #3
0
        public PPTDocument ReadAll(int width, int height)
        {
            if (Directory.Exists(_tempPath) == false)
            {
                return(null);
            }

            int slideNumber = 0;

            List <string> files = new List <string>();

            files.AddRange(Directory.GetFiles(_tempPath));

            files.Sort(CompareOnlyNumbers);

            PPTDocument document = new PPTDocument();

            for (int i = 1; i <= _current.Slides.Count; i++)
            {
                Slide slide = null;

                try
                {
                    slide = _current.Slides[i];
                }
                catch
                {
                }

                if (slide == null)
                {
                    continue;
                }

                string note           = string.Empty;
                int    animationCount = 0;

                SlideRange nodePath = null;

                try
                {
                    nodePath = slide.NotesPage;
                }
                catch { }

                if (nodePath != null)
                {
                    foreach (Shape shape in nodePath.Shapes)
                    {
                        PpPlaceholderType currentType = PpPlaceholderType.ppPlaceholderObject;

                        try
                        {
                            currentType = shape.PlaceholderFormat.Type;
                        }
                        catch { }

                        if (currentType == PpPlaceholderType.ppPlaceholderBody)
                        {
                            if (shape.HasTextFrame == Microsoft.Office.Core.MsoTriState.msoTrue)
                            {
                                if (shape.TextFrame.HasText == Microsoft.Office.Core.MsoTriState.msoTrue)
                                {
                                    note += shape.TextFrame.TextRange.Text;
                                }
                            }
                        }

                        AnimationSettings animationSettings = null;

                        try
                        {
                            animationSettings = shape.AnimationSettings;

                            if (animationSettings.Animate == Microsoft.Office.Core.MsoTriState.msoTrue)
                            {
                                animationCount++;
                            }
                        }
                        catch { }
                    }
                }

                try
                {
                    foreach (Effect effect in slide.TimeLine.MainSequence)
                    {
                        if (effect.Timing.TriggerType == MsoAnimTriggerType.msoAnimTriggerOnPageClick)
                        {
                            animationCount++;
                        }
                    }
                }
                catch { }

                PPTPage page = new PPTPage();
                page.Note           = note;
                page.ImageAsText    = ConvertToImage(files[slideNumber], width, height);
                page.AnimationCount = animationCount;

                slideNumber++;

                document.List.Add(page);
            }

            document.Count  = document.List.Count;
            document.Width  = width;
            document.Height = height;
            return(document);
        }