Beispiel #1
0
        private void Draw(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            ds.Root      = AppDomain.CurrentDomain.BaseDirectory;
            ds.LectureId = "204304";

            DrawScreenShot(group, currenttime, forcerefresh, ds);
            DrawWhiteBoard(group, currenttime, forcerefresh, ds);
        }
Beispiel #2
0
        private void Draw(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            ds.Root = AppDomain.CurrentDomain.BaseDirectory;
            ds.LectureId = "204304";

            DrawScreenShot(group, currenttime, forcerefresh, ds);
            DrawWhiteBoard(group, currenttime, forcerefresh, ds);
        }
Beispiel #3
0
        private void DrawWhiteBoard(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            bool drawLines = true;
            int currentMin = Helper.GetMinute(currenttime * 1000);
            if (previousMin == currentMin && forcerefresh == false)
            {
                // Whiteboard data is based on minute, not second.
                // Only draw when in different minute, or user changed the slider manually.
                drawLines = false;
            }
            else
            {
                forcerefresh = false;
                previousMin = currentMin;
                currentEventTs = -1;
            }

            WBData wbdata = ds.GetWhiteBoardData(DataType.WB_1, currenttime);
            if (wbdata == null)
            {
                return;
            }

            if (drawLines && wbdata.WBLines != null && wbdata.WBLines.Count > 0)
            {
                //JavaScriptSerializer jss = new JavaScriptSerializer();
                //List<BoardLine> list = new List<BoardLine>();
                foreach (WBLine line in wbdata.WBLines)
                {
                    WBLineStyle linestyle = Helper.GetLineStyle(line.UColor);
                    Clients.Group(group).broadcastDrawWBLine(linestyle.Color, linestyle.Width, line.X0, line.Y0, line.X1, line.Y1);
                    //list.Add(new BoardLine { Color = linestyle.Color, Width = linestyle.Width, X0 = line.X0, Y0 = line.Y0, X1 = line.X1, Y1 = line.Y1 });
                }
                Clients.Group(group).broadcastDrawWBLineFinished();
                //Clients.All.broadcastDrawWBLine(jss.Serialize(list));
            }

            if (wbdata.WBEvents != null && wbdata.WBEvents.Count > 0)
            {
                Hashtable htgroup = GroupWBEventsBySecond(wbdata.WBEvents);

                int endMilliseconds = currenttime * 1000 % 60000;
                int ix;
                //JavaScriptSerializer jss = new JavaScriptSerializer();
                //List<BoardLine> list = new List<BoardLine>();
                for (ix = currentEventTs; ix <= endMilliseconds; ix++)
                {
                    List<WBEvent> wbevents = htgroup[(uint)ix] as List<WBEvent>;

                    if (wbevents == null)
                        continue;

                    foreach (WBEvent wbevent in wbevents)
                    {

                        if (wbevent.X >= 0)
                        {
                            if (lastPoint == null)
                                lastPoint = wbevent;
                            else
                            {
                                //currentLineStyle.Color.SetStroke();
                                //gctx.SetLineWidth(currentLineStyle.Width);
                                //gctx.MoveTo(lastPoint.X * xRate, lastPoint.Y * yRate);
                                //gctx.AddLineToPoint(wbevent.X * xRate, wbevent.Y * yRate);
                                //gctx.StrokePath();
                                Clients.Group(group).broadcastDrawWBEvent(currentLineStyle.Color, currentLineStyle.Width, lastPoint.X, lastPoint.Y, wbevent.X, wbevent.Y);
                                //list.Add(new BoardLine { Color = currentLineStyle.Color, Width = currentLineStyle.Width, X0 = lastPoint.X, Y0 = lastPoint.Y, X1 = wbevent.X, Y1 = wbevent.Y });
                                lastPoint = wbevent;
                            }
                        }
                        else
                        {
                            switch (wbevent.X)
                            {
                                case -100: //Pen Up
                                    currentLineStyle.Color = -8;
                                    lastPoint = null;
                                    break;
                                case -200: //Clear event
                                           //gctx.ClearRect(rect);
                                    Clients.Group(group).broadcastClearReat();
                                    lastPoint = null;
                                    break;
                                default:
                                    currentLineStyle = Helper.GetLineStyle(wbevent.X);
                                    break;
                            }
                            lastPoint = null;
                        }
                    }
                }
                Clients.Group(group).broadcastDrawWBEventFinished();
                // Clients.All.broadcastDrawWBEvent(jss.Serialize(list));
                currentEventTs = ix;
            }
        }
Beispiel #4
0
        private void DrawScreenShot(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            ScreenData screen = ds.GetScreenshotData(DataType.ScreenShot, currenttime);
            if (screen == null)
            {
                return;
            }
            if (screen.Images != null && screen.Images.Count > 0)
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                List<ScreenImage> list = new List<ScreenImage>();

                foreach (KeyValuePair<int, byte[]> item in screen.Images)
                {
                    if (item.Value == null)
                    {
                        continue;
                    }
                    //row 0~7, col 0~7
                    int row = item.Key / Constants.MAX_ROW_NO;
                    int col = item.Key % Constants.MAX_COL_NO;
                    list.Add(new ScreenImage { Row = row, Col = col, ImageStream = Convert.ToBase64String(item.Value) });
                }
                Clients.Group(group).broadcastDrawImage(jss.Serialize(list));
            }
        }
Beispiel #5
0
        private void DrawWhiteBoard(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            bool drawLines  = true;
            int  currentMin = Helper.GetMinute(currenttime * 1000);

            if (previousMin == currentMin && forcerefresh == false)
            {
                // Whiteboard data is based on minute, not second.
                // Only draw when in different minute, or user changed the slider manually.
                drawLines = false;
            }
            else
            {
                forcerefresh   = false;
                previousMin    = currentMin;
                currentEventTs = -1;
            }

            WBData wbdata = ds.GetWhiteBoardData(DataType.WB_1, currenttime);

            if (wbdata == null)
            {
                return;
            }

            if (drawLines && wbdata.WBLines != null && wbdata.WBLines.Count > 0)
            {
                //JavaScriptSerializer jss = new JavaScriptSerializer();
                //List<BoardLine> list = new List<BoardLine>();
                foreach (WBLine line in wbdata.WBLines)
                {
                    WBLineStyle linestyle = Helper.GetLineStyle(line.UColor);
                    Clients.Group(group).broadcastDrawWBLine(linestyle.Color, linestyle.Width, line.X0, line.Y0, line.X1, line.Y1);
                    //list.Add(new BoardLine { Color = linestyle.Color, Width = linestyle.Width, X0 = line.X0, Y0 = line.Y0, X1 = line.X1, Y1 = line.Y1 });
                }
                Clients.Group(group).broadcastDrawWBLineFinished();
                //Clients.All.broadcastDrawWBLine(jss.Serialize(list));
            }

            if (wbdata.WBEvents != null && wbdata.WBEvents.Count > 0)
            {
                Hashtable htgroup = GroupWBEventsBySecond(wbdata.WBEvents);

                int endMilliseconds = currenttime * 1000 % 60000;
                int ix;
                //JavaScriptSerializer jss = new JavaScriptSerializer();
                //List<BoardLine> list = new List<BoardLine>();
                for (ix = currentEventTs; ix <= endMilliseconds; ix++)
                {
                    List <WBEvent> wbevents = htgroup[(uint)ix] as List <WBEvent>;

                    if (wbevents == null)
                    {
                        continue;
                    }

                    foreach (WBEvent wbevent in wbevents)
                    {
                        if (wbevent.X >= 0)
                        {
                            if (lastPoint == null)
                            {
                                lastPoint = wbevent;
                            }
                            else
                            {
                                //currentLineStyle.Color.SetStroke();
                                //gctx.SetLineWidth(currentLineStyle.Width);
                                //gctx.MoveTo(lastPoint.X * xRate, lastPoint.Y * yRate);
                                //gctx.AddLineToPoint(wbevent.X * xRate, wbevent.Y * yRate);
                                //gctx.StrokePath();
                                Clients.Group(group).broadcastDrawWBEvent(currentLineStyle.Color, currentLineStyle.Width, lastPoint.X, lastPoint.Y, wbevent.X, wbevent.Y);
                                //list.Add(new BoardLine { Color = currentLineStyle.Color, Width = currentLineStyle.Width, X0 = lastPoint.X, Y0 = lastPoint.Y, X1 = wbevent.X, Y1 = wbevent.Y });
                                lastPoint = wbevent;
                            }
                        }
                        else
                        {
                            switch (wbevent.X)
                            {
                            case -100:     //Pen Up
                                currentLineStyle.Color = -8;
                                lastPoint = null;
                                break;

                            case -200:     //Clear event
                                           //gctx.ClearRect(rect);
                                Clients.Group(group).broadcastClearReat();
                                lastPoint = null;
                                break;

                            default:
                                currentLineStyle = Helper.GetLineStyle(wbevent.X);
                                break;
                            }
                            lastPoint = null;
                        }
                    }
                }
                Clients.Group(group).broadcastDrawWBEventFinished();
                // Clients.All.broadcastDrawWBEvent(jss.Serialize(list));
                currentEventTs = ix;
            }
        }
Beispiel #6
0
        private void DrawScreenShot(string group, int currenttime, bool forcerefresh, COLDataSource ds)
        {
            ScreenData screen = ds.GetScreenshotData(DataType.ScreenShot, currenttime);

            if (screen == null)
            {
                return;
            }
            if (screen.Images != null && screen.Images.Count > 0)
            {
                JavaScriptSerializer jss  = new JavaScriptSerializer();
                List <ScreenImage>   list = new List <ScreenImage>();

                foreach (KeyValuePair <int, byte[]> item in screen.Images)
                {
                    if (item.Value == null)
                    {
                        continue;
                    }
                    //row 0~7, col 0~7
                    int row = item.Key / Constants.MAX_ROW_NO;
                    int col = item.Key % Constants.MAX_COL_NO;
                    list.Add(new ScreenImage {
                        Row = row, Col = col, ImageStream = Convert.ToBase64String(item.Value)
                    });
                }
                Clients.Group(group).broadcastDrawImage(jss.Serialize(list));
            }
        }