public override IImage Create(string data, IRgb24BitmapBase image, IRgb24BitmapBase imageText) { var bitmap = image as IRgb24Bitmap; if (bitmap?.FrameCount > 1) { var bitMatrix = QRCodeEncoder.Build(data); int moduleCount = bitMatrix.Size; var images = Enumerable.Range(0, bitmap.FrameCount).Select(i => { var imgBitMatrix = Binarizer.Binarize(image, moduleCount * 3, moduleCount * 3); //var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3); var imgColorMatrix = new ColorSquare(moduleCount * 3); var imgMatrix = Binarizer.Binarize(bitmap.GetFrame(i), moduleCount * 3, moduleCount * 3); var frameMatrix = Merger.Merge(bitMatrix, QRCodeEncoder.TypeNumber, imgBitMatrix); return(BitMatrixDrawer.Draw(frameMatrix, imgColorMatrix)); }).ToList(); if (FrameMerger == null) { return(images[0]); } var frames = images.Select(img => img as IRgb24BitmapFrame).ToList(); if (frames.Contains(null)) { return(images[0]); } return(FrameMerger(frames)); } else { return(base.Create(data, image, imageText)); } }
// Use this for initialization void Start() { List <Color> availableColors = new List <Color>(GameController.instance.availableColors.Keys); for (int i = 0; i < availableColors.Count; i++) { GameObject colorSquare = Instantiate(colorSquarePrefab, new Vector2(startingPosition.x + gap * i, startingPosition.y), transform.rotation) as GameObject; ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>(); colorSquareScript.SetSquareColor(availableColors[i]); colorSquareScript.SetID(i); } }
void UpdateSquaresAccordingly(int ID, bool availability) { GameObject[] colorSquares = GameObject.FindGameObjectsWithTag("ColorSquare"); foreach (GameObject colorSquare in colorSquares) { if (colorSquare.GetComponent <ColorSquare>().GetID() == syncSquareIdToChange) { ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>(); colorSquareScript.SetIsAvailable(syncAvailabilityChange); colorSquareScript.ChangeLook(); } } }
public void OnButtonPressed() { if (isAvailable) { isAvailable = false; isSelected = true; GameObject playerShip = null; GameObject[] ships = GameObject.FindGameObjectsWithTag("Player"); foreach (GameObject ship in ships) { if (ship.GetComponent <NetworkIdentity>().isLocalPlayer) { playerShip = ship; } } //ship color playerShip.GetComponent <Ship>().UpdateShipColor(squareColor); playerShip.GetComponent <Player_ID>().TransmitColor(squareColor); playerShip.GetComponent <ColorSquareManager>().TransmitChange(squareID, isAvailable); if (GameController.instance.currentSquareID != -1) { GameObject[] colorSquares = GameObject.FindGameObjectsWithTag("ColorSquare"); foreach (GameObject colorSquare in colorSquares) { if (colorSquare.GetComponent <ColorSquare>().GetID() == GameController.instance.currentSquareID) { ColorSquare colorSquareScript = colorSquare.GetComponent <ColorSquare>(); colorSquareScript.SetIsAvailable(true); colorSquareScript.SetIsSelected(false); colorSquareScript.ChangeLook(); playerShip.GetComponent <ColorSquareManager>().TransmitChange(GameController.instance.currentSquareID, true); } } } GameController.instance.currentSquareID = squareID; ChangeLook(); } }
void PickRandomColor() { GameObject[] colorSquares = GameObject.FindGameObjectsWithTag("ColorSquare"); List <GameObject> availableColors = new List <GameObject>(); foreach (GameObject colorSquare in colorSquares) { if (colorSquare.GetComponent <ColorSquare>().GetIsAvailable() == true) { availableColors.Add(colorSquare); } } ColorSquare randomColorSquare = availableColors[Random.Range(0, availableColors.Count)].GetComponent <ColorSquare>(); randomColorSquare.SetIsSelected(true); randomColorSquare.SetIsAvailable(false); myTransform.gameObject.GetComponent <Ship>().UpdateShipColor(randomColorSquare.squareColor); myTransform.gameObject.GetComponent <Player_ID>().TransmitColor(randomColorSquare.squareColor); myTransform.gameObject.GetComponent <ColorSquareManager>().TransmitChange(randomColorSquare.GetID(), false); GameController.instance.currentSquareID = randomColorSquare.GetID(); randomColorSquare.ChangeLook(); }
public virtual IImage Create(string data, IRgb24BitmapBase image, IRgb24BitmapBase imageText) { var bitMatrix = QRCodeEncoder.Build(data); //~20 ms if (image != null && 2 == 3) //qr code { int moduleCount = bitMatrix.Size; var imgBitMatrix = Binarizer.Binarize(image, moduleCount * 3, moduleCount * 3); var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3); //var imgColorMatrix = new ColorSquare(moduleCount * 3); bitMatrix = Merger.Merge(bitMatrix, QRCodeEncoder.TypeNumber, imgBitMatrix); return(BitMatrixDrawer.Draw(bitMatrix, imgColorMatrix)); } else if (image != null) //text on image { int moduleCount = bitMatrix.Size; var imgColorMatrix = Colorizer.Colorize(image, moduleCount * 3, moduleCount * 3); var tripMatrix = new TripSquare(500); for (var i = 0; i < 500; i++) { for (var ii = 0; ii < 500; ii++) { tripMatrix[i, ii] = 0; } }//~20 ms since else if Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); for (var i = 5; i < 495; i++) { for (var ii = 5; ii < 495; ii++) { if (imageText.GetPixel(i, ii) < 12000000) { tripMatrix[ii, i] = 1; } if (imageText.GetPixel(i, ii) < 8000000) { tripMatrix[ii, i] = 2; } if (imageText.GetPixel(i, ii) < 4000000) { tripMatrix[ii, i] = 3; } } }//~110 ms for this double loop for (var i = 10; i < 500 - 10; i++) { for (var ii = 10; ii < 500 - 10; ii++) { /* * if (tripMatrix[i,ii] == 0){ * var minDist = 999; * for (var iii=i-10;iii<i+11;iii++){ * for (var iiii=ii-10;iiii<ii+11;iiii++){ * if (tripMatrix[iii,iiii] > 0){ * var d = (i-iii)*(i-iii)+(ii-iiii)*(ii-iiii); * if (d< minDist){ * minDist = d; * } * } * } * } * if (minDist < 51){ * tripMatrix[i,ii] = (2*minDist-150)/5; * } * } */ if (tripMatrix[i, ii] > 0) { for (var iii = i - 10; iii < i + 11; iii++) { for (var iiii = ii - 10; iiii < ii + 11; iiii++) { if (tripMatrix[iii, iiii] == 0) { var d = (i - iii) * (i - iii) + (ii - iiii) * (ii - iiii); if (d < 51) { tripMatrix[iii, iiii] = (2 * d - 150) / 5; } } else if (tripMatrix[iii, iiii] < 0) { var d = (i - iii) * (i - iii) + (ii - iiii) * (ii - iiii); if (d < 51) { var dd = (2 * d - 150) / 5; if (dd < tripMatrix[iii, iiii]) { tripMatrix[iii, iiii] = dd; } } } } } } } } stopWatch.Stop(); // Get the elapsed time as a TimeSpan value. TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine("QRArtCreatorTime " + elapsedTime); return(TripMatrixDrawer.Draw(tripMatrix, imgColorMatrix)); } else { Console.Out.WriteLine("no image"); var imgMatrix = new ColorSquare(bitMatrix.Size * 3); return(BitMatrixDrawer.Draw(bitMatrix, imgMatrix)); } }
// Use this for initialization void Start() { colorSquare = GetComponent <ColorSquare>(); }