예제 #1
0
        private void StartThreadAndWsConnection()
        {
            if (GeneralVm.WebSocketConnector.OpenConnection(WebSocketConnection.WebSocket))
            {
                SetConnected(true);

                //Gibt in LED Controller gespeicherters Licht aus.
                RgbData SavedRGB = new RgbData(Settings.Default.SelectedColor.R, Settings.Default.SelectedColor.G, Settings.Default.SelectedColor.B);
                SavedRGB.SendValues(WebSocketConnection.WebSocket);
            }
            else
            {
                MessageBox.Show("Couldn't reach Websocket-Server. Timeout or wrong port");
                SetConnected(false);
            }
        }
예제 #2
0
 private static void FlashWhite(WebSocket ws, RgbData rgb, int time)
 {
     for (int i = 0; i < 255; i++)
     {
         rgb.r = i;
         rgb.g = i;
         rgb.b = i;
         rgb.SendValues(ws);
         System.Threading.Thread.Sleep(time);
         if (i == 254)
         {
             for (int j = 255; j > 0; j--)
             {
                 rgb.r = j;
                 rgb.g = j;
                 rgb.b = j;
                 rgb.SendValues(ws);
                 System.Threading.Thread.Sleep(time);
             }
         }
     }
 }
예제 #3
0
 //todo favorites abspeichern lassen
 public LEDVM()
 {
     RgbData = new RgbData();
 }
예제 #4
0
 static unsafe void Hsl2Rgb360(double h, double s, double l,
         RgbData *prgb)
 {
     // Convert 0..360 to 0..1
     double r, g, b;
     Hsl2Rgb(h / 360.0, s, l, &r, &g, &b);
     prgb->bRed = (byte)(r * 255.0);
     prgb->bGreen = (byte)(g * 255.0);
     prgb->bBlue = (byte)(b * 255.0);
 }
예제 #5
0
        // Skips dst where src has transparent color.
        // Darkens dst where src has shadow color.
        // Translates side colors.
        // NOTE: Performs dst but not src clipping!!!
        // NOTE: Assumes src and dst BitmapData are PixelFormat.Format24bppRgb

        public unsafe void SuperBlt8(int xSrc, int ySrc,
                                     BitmapData bmdDst, int xDst, int yDst, int cx, int cy,
                                     bool fMapSideColors)
        {
            // If completely off dst bounds, just return.

            if ((xDst >= bmdDst.Width || xDst + cx < 0) || (yDst >= bmdDst.Height) || (yDst + cy < 0))
            {
                return;
            }

            // Dst clip

            if (xDst + cx > bmdDst.Width)
            {
                cx = bmdDst.Width - xDst;
            }
            if (yDst + cy > bmdDst.Height)
            {
                cy = bmdDst.Height - yDst;
            }

            if (xDst < 0)
            {
                cx   += xDst;
                xSrc -= xDst;
                xDst  = 0;
            }

            if (yDst < 0)
            {
                cy   += yDst;
                ySrc -= yDst;
                yDst  = 0;
            }

            BitmapData bmdSrc = m_bm.LockBits(
                new Rectangle(0, 0, m_bm.Width, m_bm.Height),
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

            RgbData *prgbSrc = (RgbData *)((byte *)bmdSrc.Scan0 + (ySrc * bmdSrc.Stride) + (xSrc * sizeof(RgbData)));
            RgbData *prgbDst = (RgbData *)((byte *)bmdDst.Scan0 + (yDst * bmdDst.Stride) + (xDst * sizeof(RgbData)));

            while (cy-- > 0)
            {
                RgbData *prgbDstT = prgbDst;
                RgbData *prgbSrcT = prgbSrc;

                for (int x = 0; x < cx; x++)
                {
                    RgbData rgbSrc = *prgbSrcT++;

                    // Handle shadow color

                    if (rgbSrc.bRed == 156 && rgbSrc.bGreen == 212 & rgbSrc.bBlue == 248)
                    {
                        prgbDstT->bRed   = (byte)((prgbDstT->bRed * 60) / 100);
                        prgbDstT->bGreen = (byte)((prgbDstT->bGreen * 60) / 100);
                        prgbDstT->bBlue  = (byte)((prgbDstT->bBlue * 60) / 100);
                        prgbDstT++;

                        // Handle transparent color
                    }
                    else if (rgbSrc.bRed == 255 && rgbSrc.bGreen == 0 && rgbSrc.bBlue == 255)
                    {
                        prgbDstT++;

                        // Handle side colors
                    }
                    else if (fMapSideColors)
                    {
                        if (rgbSrc.bRed == 0 && rgbSrc.bGreen == 116 && rgbSrc.bBlue == 232)
                        {
                            *prgbDstT++ = argbSide[0];
                        }
                        else if (rgbSrc.bRed == 0 && rgbSrc.bGreen == 96 && rgbSrc.bBlue == 196)
                        {
                            *prgbDstT++ = argbSide[1];
                        }
                        else if (rgbSrc.bRed == 0 && rgbSrc.bGreen == 64 && rgbSrc.bBlue == 120)
                        {
                            *prgbDstT++ = argbSide[2];
                        }
                        else if (rgbSrc.bRed == 0 && rgbSrc.bGreen == 48 && rgbSrc.bBlue == 92)
                        {
                            *prgbDstT++ = argbSide[3];
                        }
                        else if (rgbSrc.bRed == 0 && rgbSrc.bGreen == 32 && rgbSrc.bBlue == 64)
                        {
                            *prgbDstT++ = argbSide[4];
                        }
                        else
                        {
                            *prgbDstT++ = rgbSrc;
                        }

                        // Just copy everything else unaltered
                    }
                    else
                    {
                        *prgbDstT++ = rgbSrc;
                    }
                }

                // Advance to next scan line

                prgbDst = (RgbData *)(((byte *)prgbDst) + bmdDst.Stride);
                prgbSrc = (RgbData *)(((byte *)prgbSrc) + bmdSrc.Stride);
            }

            m_bm.UnlockBits(bmdSrc);
        }