diff options
author | Brian Osman <brianosman@google.com> | 2017-11-22 13:23:35 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-22 18:59:44 +0000 |
commit | 4f99e58252175f01c0b9ca1a5e2fc7acec6acec3 (patch) | |
tree | 64458810ed2962bbdcb470a4f199feade2be2b03 /experimental | |
parent | d923a71a113d97dc87b4424c25d5b5019331db24 (diff) |
Remove a huge pile of views code
All of this is dead when not using the old SkWindow framework.
TBR=reed@google.com
Bug: skia:
Change-Id: I0f6ab18987a98469bfd367d5bc10967300dfd3ca
Reviewed-on: https://skia-review.googlesource.com/75384
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'experimental')
-rw-r--r-- | experimental/DrawingBoard/SampleDrawingClient.cpp | 278 | ||||
-rw-r--r-- | experimental/DrawingBoard/SampleDrawingServer.cpp | 222 | ||||
-rw-r--r-- | experimental/DrawingBoard/SkColorPalette.cpp | 195 | ||||
-rw-r--r-- | experimental/DrawingBoard/SkColorPalette.h | 34 | ||||
-rw-r--r-- | experimental/DrawingBoard/SkNetPipeController.cpp | 50 | ||||
-rw-r--r-- | experimental/DrawingBoard/SkNetPipeController.h | 36 | ||||
-rw-r--r-- | experimental/Networking/SampleNetPipeReader.cpp | 129 |
7 files changed, 0 insertions, 944 deletions
diff --git a/experimental/DrawingBoard/SampleDrawingClient.cpp b/experimental/DrawingBoard/SampleDrawingClient.cpp deleted file mode 100644 index 542c589030..0000000000 --- a/experimental/DrawingBoard/SampleDrawingClient.cpp +++ /dev/null @@ -1,278 +0,0 @@ -#include "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "SkGPipe.h" -#include "SkSockets.h" -#include "SkNetPipeController.h" -#include "SkCornerPathEffect.h" -#include "SkColorPalette.h" -#include "SkOSMenu.h" - - -/** - * Drawing Client - * - * A drawing client that allows a user to perform simple brush stokes with - * a selected color and brush size. The drawing client communicates with a - * drawing server to send/receive data to/from other clients connected to the - * same server. The drawing client stores data in fData and fBuffer depending on - * the data type. Append type means that the drawing data is a completed stroke - * and Replace type means that the drawing data is in progress and will be - * replaced by subsequent data. fData and fBuffer are read by a pipe reader and - * reproduce the drawing. When the client is in a normal state, the data stored - * on the client and the server should be identical. - * The drawing client is also able to switch between vector and bitmap drawing. - * The drawing client also renders the latest drawing stroke locally in order to - * produce better reponses. This can be disabled by calling - * controller.disablePlayBack(), which will introduce a lag between the input - * and the drawing. - * Note: in order to keep up with the drawing data, the client will try to read - * a few times each frame in case more than one frame worth of data has been - * received and render them together. This behavior can be adjusted by tweaking - * MAX_READ_PER_FRAME or disabled by turning fSync to false - */ - -#define MAX_READ_PER_FRAME 5 - -class DrawingClientView : public SampleView { -public: - DrawingClientView() { - fSocket = NULL; - fTotalBytesRead = 0; - fPalette = new SkColorPalette; - fPalette->setSize(100, 300); - fPalette->setVisibleP(true); - this->attachChildToFront(fPalette); - fPalette->unref(); - fBrushSize = 2.5; - fAA = false; - fPaletteVisible = true; - fSync = true; - fVector = true; - } - ~DrawingClientView() { - if (fSocket) { - delete fSocket; - } - fData.reset(); - fBuffer.reset(); - } - - virtual void requestMenu(SkOSMenu* menu) { - menu->setTitle("Drawing Client"); - menu->appendTextField("Server IP", "Server IP", this->getSinkID(), - "IP address or hostname"); - menu->appendSwitch("Vector", "Vector", this->getSinkID(), fVector); - menu->appendSlider("Brush Size", "Brush Size", this->getSinkID(), 1.0, - 100.0, fBrushSize); - menu->appendSwitch("Anti-Aliasing", "AA", this->getSinkID(), fAA); - menu->appendSwitch("Show Color Palette", "Palette", this->getSinkID(), - fPaletteVisible); - menu->appendSwitch("Sync", "Sync", this->getSinkID(), fSync); - menu->appendAction("Clear", this->getSinkID()); - } - -protected: - - static void readData(int cid, const void* data, size_t size, - SkSocket::DataType type, void* context) { - DrawingClientView* view = (DrawingClientView*)context; - view->onRead(cid, data, size, type); - } - - void onRead(int cid, const void* data, size_t size, SkSocket::DataType type) { - if (size > 0) { - fBuffer.reset(); - if (type == SkSocket::kPipeReplace_type) - fBuffer.append(size, (const char*)data); - else if (type == SkSocket::kPipeAppend_type) - fData.append(size, (const char*)data); - else { - //other types of data - } - } - } - - bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SampleCode::TitleR(evt, "Drawing Client"); - return true; - } - - return this->INHERITED::onQuery(evt); - } - - bool onEvent(const SkEvent& evt) {; - if (SkOSMenu::FindSliderValue(evt, "Brush Size", &fBrushSize)) - return true; - - SkString s; - if (SkOSMenu::FindText(evt, "Server IP", &s)) { - if (NULL != fSocket) { - delete fSocket; - } - fSocket = new SkTCPClient(s.c_str(), 40000); - fSocket->connectToServer(); - fSocket->suspendWrite(); - SkDebugf("Connecting to %s\n", s.c_str()); - fData.reset(); - fBuffer.reset(); - this->inval(NULL); - return true; - } - if (SkOSMenu::FindSwitchState(evt, "AA", &fAA) || - SkOSMenu::FindSwitchState(evt, "Sync", &fSync)) - return true; - if (SkOSMenu::FindSwitchState(evt, "Vector", &fVector)) { - this->clearBitmap(); - return true; - } - if (SkOSMenu::FindAction(evt, "Clear")) { - this->clear(); - return true; - } - if (SkOSMenu::FindSwitchState(evt, "Palette", &fPaletteVisible)) { - fPalette->setVisibleP(fPaletteVisible); - return true; - } - return this->INHERITED::onEvent(evt); - } - - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { - return new Click(this); - } - - virtual bool onClick(SkView::Click* click) { - switch (click->fState) { - case SkView::Click::kDown_State: - fCurrLine.moveTo(click->fCurr); - fType = SkSocket::kPipeReplace_type; - if (fSocket) - fSocket->resumeWrite(); - break; - case SkView::Click::kMoved_State: - fCurrLine.lineTo(click->fCurr); - break; - case SkView::Click::kUp_State: - fType = SkSocket::kPipeAppend_type; - break; - default: - break; - } - return true; - } - - virtual void onDrawContent(SkCanvas* canvas) { - if (fSocket) { - if (fSocket->isConnected()) { - if (fSync) { - int count = 0; - while (fSocket->readPacket(readData, this) > 0 && - count < MAX_READ_PER_FRAME) - ++count; - } - else - fSocket->readPacket(readData, this); - } - else - fSocket->connectToServer(); - } - size_t bytesRead = 0; - SkGPipeReader::Status status; - SkCanvas bufferCanvas(fBase); - SkCanvas* tempCanvas; - while (fTotalBytesRead < fData.count()) { - if (fVector) - tempCanvas = canvas; - else - tempCanvas = &bufferCanvas; - SkGPipeReader reader(tempCanvas); - status = reader.playback(fData.begin() + fTotalBytesRead, - fData.count() - fTotalBytesRead, - &bytesRead); - SkASSERT(SkGPipeReader::kError_Status != status); - fTotalBytesRead += bytesRead; - } - if (fVector) - fTotalBytesRead = 0; - else - canvas->drawBitmap(fBase, 0, 0, NULL); - - size_t totalBytesRead = 0; - while (totalBytesRead < fBuffer.count()) { - SkGPipeReader reader(canvas); - status = reader.playback(fBuffer.begin() + totalBytesRead, - fBuffer.count() - totalBytesRead, - &bytesRead); - SkASSERT(SkGPipeReader::kError_Status != status); - totalBytesRead += bytesRead; - } - - SkNetPipeController controller(canvas); - SkGPipeWriter writer; - SkCanvas* writerCanvas = writer.startRecording(&controller, - SkGPipeWriter::kCrossProcess_Flag); - - //controller.disablePlayback(); - SkPaint p; - p.setColor(fPalette->getColor()); - p.setStyle(SkPaint::kStroke_Style); - p.setStrokeWidth(fBrushSize); - p.setStrokeCap(SkPaint::kRound_Cap); - p.setStrokeJoin(SkPaint::kRound_Join); - p.setAntiAlias(fAA); - p.setPathEffect(new SkCornerPathEffect(55))->unref(); - writerCanvas->drawPath(fCurrLine, p); - writer.endRecording(); - - controller.writeToSocket(fSocket, fType); - if (fType == SkSocket::kPipeAppend_type && fSocket) { - fSocket->suspendWrite(); - fCurrLine.reset(); - } - - this->inval(NULL); - } - - virtual void onSizeChange() { - this->INHERITED::onSizeChange(); - fPalette->setLoc(this->width()-100, 0); - fBase.setConfig(SkBitmap::kARGB_8888_Config, this->width(), this->height()); - fBase.allocPixels(NULL); - this->clearBitmap(); - } - -private: - void clear() { - fData.reset(); - fBuffer.reset(); - fCurrLine.reset(); - fTotalBytesRead = 0; - this->clearBitmap(); - } - void clearBitmap() { - fTotalBytesRead = 0; - fBase.eraseColor(fBGColor); - } - SkTDArray<char> fData; - SkTDArray<char> fBuffer; - SkBitmap fBase; - SkPath fCurrLine; - SkTCPClient* fSocket; - SkSocket::DataType fType; - SkColorPalette* fPalette; - bool fPaletteVisible; - size_t fTotalBytesRead; - SkScalar fBrushSize; - bool fAA; - bool fSync; - bool fVector; - - typedef SampleView INHERITED; -}; - - -/////////////////////////////////////////////////////////////////////////////// - -static SkView* MyFactory() { return new DrawingClientView; } -static SkViewRegister reg(MyFactory); diff --git a/experimental/DrawingBoard/SampleDrawingServer.cpp b/experimental/DrawingBoard/SampleDrawingServer.cpp deleted file mode 100644 index fa059fa70a..0000000000 --- a/experimental/DrawingBoard/SampleDrawingServer.cpp +++ /dev/null @@ -1,222 +0,0 @@ -#include "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "SkGPipe.h" -#include "SkSockets.h" -#include "SkNetPipeController.h" -#include "SkCornerPathEffect.h" -#include "SkOSMenu.h" -#include <map> - -/** - * Drawing Server - * - * This simple drawing server can accept connections from multiple drawing - * clients simultaneously. It accumulates drawing data from each client each - * frame, stores it in the appropriate place, and then broadcasts incremental - * changes back to all the clients. Each logical packet, meaning one brush - * stoke in this case can be of two types, append and replace. Append types are - * completed strokes ready to be stored in the fData queue and will no longer be - * modified. Replace types are drawing operations that are still in progress on - * the client side, so they are appended to fBuffer. The location and size of - * the buffered data for each client is stored in a map and updated properly. - * Each time a new replace drawing call is received from a client, its previous - * buffered data is discarded. - * Since the Server keeps all the complete drawing data and the latest buffered - * data, it's able to switch between vector and bitmap drawing - */ - -class DrawingServerView : public SampleView { -public: - DrawingServerView(){ - fServer = new SkTCPServer(40000); - fServer->suspendWrite(); - fTotalBytesRead = fTotalBytesWritten = 0; - fVector = true; - } - ~DrawingServerView() { - delete fServer; - fData.reset(); - fBuffer.reset(); - fClientMap.clear(); - } - - virtual void requestMenu(SkOSMenu* menu) { - menu->setTitle("Drawing Server"); - menu->appendAction("Clear", this->getSinkID()); - menu->appendSwitch("Vector", "Vector", this->getSinkID(), fVector); - } - -protected: - static void readData(int cid, const void* data, size_t size, - SkSocket::DataType type, void* context) { - DrawingServerView* view = (DrawingServerView*)context; - view->onRead(cid, data, size, type); - } - - void onRead(int cid, const void* data, size_t size, SkSocket::DataType type) { - if (NULL == data && size <= 0) - return; - - ClientState* cs; - std::map<int, ClientState*>::iterator it = fClientMap.find(cid); - if (it == fClientMap.end()) { //New client - cs = new ClientState; - cs->bufferBase = 0; - cs->bufferSize = 0; - fClientMap[cid] = cs; - } - else { - cs = it->second; - } - - if (type == SkSocket::kPipeReplace_type) { - fBuffer.remove(cs->bufferBase, cs->bufferSize); - - for (it = fClientMap.begin(); it != fClientMap.end(); ++it) { - if (cid == it->first) - continue; - else { - if (it->second->bufferBase > cs->bufferBase) { - it->second->bufferBase -= cs->bufferSize; - SkASSERT(it->second->bufferBase >= 0); - } - } - } - - cs->bufferBase = fBuffer.count(); - cs->bufferSize = size; - fBuffer.append(size, (const char*)data); - } - else if (type == SkSocket::kPipeAppend_type) { - fData.append(size, (const char*)data); - fServer->resumeWrite(); - fServer->writePacket(fData.begin() + fTotalBytesWritten, - fData.count() - fTotalBytesWritten, - SkSocket::kPipeAppend_type); - fTotalBytesWritten = fData.count(); - fServer->suspendWrite(); - } - else { - //other types of data - } - } - - bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SampleCode::TitleR(evt, "Drawing Server"); - return true; - } - return this->INHERITED::onQuery(evt); - } - - bool onEvent(const SkEvent& evt) { - if (SkOSMenu::FindAction(evt, "Clear")) { - this->clear(); - return true; - } - if (SkOSMenu::FindSwitchState(evt, "Vector", &fVector)) { - this->clearBitmap(); - return true; - } - return this->INHERITED::onEvent(evt); - } - - - virtual void onDrawContent(SkCanvas* canvas) { - if (fCurrMatrix != canvas->getTotalMatrix()) { - fTotalBytesRead = 0; - fCurrMatrix = canvas->getTotalMatrix(); - } - - fServer->acceptConnections(); - if (fServer->readPacket(readData, this) > 0) { - fServer->resumeWrite(); - } - else { - fServer->suspendWrite(); - } - - size_t bytesRead; - SkGPipeReader::Status stat; - SkCanvas bufferCanvas(fBase); - SkCanvas* tempCanvas; - while (fTotalBytesRead < fData.count()) { - if (fVector) { - tempCanvas = canvas; - } else { - tempCanvas = &bufferCanvas; - } - SkGPipeReader reader(tempCanvas); - stat = reader.playback(fData.begin() + fTotalBytesRead, - fData.count() - fTotalBytesRead, - &bytesRead); - SkASSERT(SkGPipeReader::kError_Status != stat); - fTotalBytesRead += bytesRead; - } - if (fVector) { - fTotalBytesRead = 0; - } else { - canvas->drawBitmap(fBase, 0, 0, NULL); - } - - size_t totalBytesRead = 0; - while (totalBytesRead < fBuffer.count()) { - SkGPipeReader reader(canvas); - stat = reader.playback(fBuffer.begin() + totalBytesRead, - fBuffer.count() - totalBytesRead, - &bytesRead); - SkASSERT(SkGPipeReader::kError_Status != stat); - totalBytesRead += bytesRead; - } - - fServer->writePacket(fBuffer.begin(), fBuffer.count(), - SkSocket::kPipeReplace_type); - - this->inval(NULL); - } - - virtual void onSizeChange() { - this->INHERITED::onSizeChange(); - fBase.setConfig(SkBitmap::kARGB_8888_Config, - this->width(), - this->height()); - fBase.allocPixels(NULL); - this->clearBitmap(); - } - -private: - void clear() { - fData.reset(); - fBuffer.reset(); - fTotalBytesRead = fTotalBytesWritten = 0; - fClientMap.clear(); - this->clearBitmap(); - } - void clearBitmap() { - fTotalBytesRead = 0; - fBase.eraseColor(fBGColor); - } - - struct ClientState { - int bufferBase; - int bufferSize; - }; - - std::map<int, ClientState*> fClientMap; - SkTDArray<char> fData; - SkTDArray<char> fBuffer; - size_t fTotalBytesRead; - size_t fTotalBytesWritten; - SkMatrix fCurrMatrix; - SkBitmap fBase; - bool fVector; - SkTCPServer* fServer; - typedef SampleView INHERITED; -}; - - -/////////////////////////////////////////////////////////////////////////////// - -static SkView* MyFactory() { return new DrawingServerView; } -static SkViewRegister reg(MyFactory); diff --git a/experimental/DrawingBoard/SkColorPalette.cpp b/experimental/DrawingBoard/SkColorPalette.cpp deleted file mode 100644 index f2776af4ff..0000000000 --- a/experimental/DrawingBoard/SkColorPalette.cpp +++ /dev/null @@ -1,195 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "SkView.h" -#include "SkCanvas.h" -#include "SkPaint.h" -#include "SkGradientShader.h" -#include "SkColorPalette.h" - -SkColorPalette::SkColorPalette() { - fSlotRect = SkRect::MakeWH(SkIntToScalar(50), SkIntToScalar(20)); - fGradientRect = SkRect::MakeWH(SkIntToScalar(100), SkIntToScalar(100)); - fSelected = 0; - fCurrColor = 0xFF000000; - - fColors[0] = SK_ColorWHITE; - fColors[1] = SK_ColorBLACK; - fColors[2] = SK_ColorRED; - fColors[3] = SK_ColorGREEN; - fColors[4] = SK_ColorBLUE; -} - -bool SkColorPalette::onEvent(const SkEvent& evt) { - return this->INHERITED::onEvent(evt); -} - -void SkColorPalette::onDraw(SkCanvas* canvas) { - canvas->drawColor(SK_ColorWHITE); - - SkPaint paint; - paint.setAntiAlias(true); - - canvas->translate(PalettePadding, PalettePadding); - - for (int i = 0; i < PaletteSlots; ++i) { - if (fSelected == i) { - paint.setStrokeWidth(SkIntToScalar(3)); - } - else { - paint.setStrokeWidth(1); - } - - paint.setStyle(SkPaint::kStroke_Style); - paint.setColor(SK_ColorBLACK); - canvas->drawRect(fSlotRect, paint); - paint.setStyle(SkPaint::kFill_Style); - paint.setColor(fColors[i]); - canvas->drawRect(fSlotRect, paint); - canvas->translate(0, fSlotRect.height() + PalettePadding); - } - paint.setStrokeWidth(0); - canvas->translate(0, PalettePadding); - SkPoint p = SkPoint::Make(0,0); - SkPoint q = SkPoint::Make(this->width(), 0); - SkPoint pts[] = {p, q}; - - SkColor colors[] = { SK_ColorRED, SK_ColorYELLOW, SK_ColorGREEN, - SK_ColorCYAN, SK_ColorBLUE, SK_ColorMAGENTA,SK_ColorRED}; - SkScalar colorPositions[] = { 0, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0}; - - - SkShader* shader1 = SkGradientShader::CreateLinear(pts, colors, colorPositions,7, - SkShader::kMirror_TileMode); - paint.setShader(shader1)->unref(); - - canvas->drawRect(fGradientRect, paint); - - //this->INHERITED::onDraw(canvas); -} - -SkView::Click* SkColorPalette::onFindClickHandler(SkScalar x, SkScalar y) { - return new Click(this); -} - -bool SkColorPalette::onClick(SkView::Click* click) { - SkPoint curr = click->fCurr; - //SkDebugf("click %f %f \n", curr.fX, curr.fY); - int selected = selectSlot(curr); - if (selected >= 0) { - switch (click->fState) { - case SkView::Click::kDown_State: - case SkView::Click::kMoved_State: - case SkView::Click::kUp_State: - fSelected = selected; - fCurrColor = fColors[fSelected]; - break; - default: - break; - } - return true; - } - else{ - //account for padding - curr.fX -= PalettePadding; - curr.fY -= 2 * PalettePadding + (fSlotRect.height() + PalettePadding) * PaletteSlots; - if (curr.fX < 0 || curr.fX > fGradientRect.width() || - curr.fY < 0 || curr.fY > fGradientRect.height()) { - return false; - } - else { - switch (click->fState) { - case SkView::Click::kDown_State: - case SkView::Click::kMoved_State: - case SkView::Click::kUp_State: - fColors[fSelected] = selectColorFromGradient(curr); - fCurrColor = fColors[fSelected]; - break; - default: - break; - } - return true; - } - } -} - -void SkColorPalette::onSizeChange() { - fGradientRect = SkRect::MakeWH(this->width() - 2*PalettePadding, - this->width() - 2*PalettePadding); - this->INHERITED::onSizeChange(); -} - -int SkColorPalette::selectSlot(SkPoint& cursorPosition) { - //account for padding - cursorPosition.fX -= PalettePadding; - cursorPosition.fY -= PalettePadding; - - if (cursorPosition.fX < 0 || cursorPosition.fX > fSlotRect.width() || - cursorPosition.fY < 0 || cursorPosition.fY > (fSlotRect.height() + PalettePadding) * PaletteSlots) { - return -1; - } - int index = cursorPosition.fY/(fSlotRect.height() + PalettePadding); - int offset = (int)cursorPosition.fY%((int)fSlotRect.height() + PalettePadding); - if (offset <= fSlotRect.height()) { - return index; - } - else { - return -1; - } -} - -SkColor SkColorPalette::selectColorFromGradient(SkPoint& cursorPosition) { - float h = cursorPosition.fX/fGradientRect.width(); - float s = 1.0 - cursorPosition.fY/fGradientRect.height(); - float v = 1.0; - float _h,r,g,b; - float _1, _2, _3; - int _i; - - _h = h * 6; - _i = (int)_h; - _1 = v * (1 - s); - _2 = v * (1 - s * (_h - _i)); - _3 = v * (1 - s * (1 - (_h - _i))); - - if (_i == 0) { - r = v; - g = _3; - b = _1; - } - else if (_i == 1) { - r = _2; - g = v; - b = _1; - } - else if (_i == 2) { - r = _1; - g = v; - b = _3; - } - else if (_i == 3) { - r = _1; - g = _2; - b = v; - } - else if (_i == 4) { - r = _3; - g = _1; - b = v; - } - else { - r = v; - g = _1; - b = _2; - }; - - SkColor retval = 0xFF000000; - retval += ((int)(r * 255) << 16); - retval += ((int)(g * 255) << 8); - retval += (int)(b * 255); - return retval; -} diff --git a/experimental/DrawingBoard/SkColorPalette.h b/experimental/DrawingBoard/SkColorPalette.h deleted file mode 100644 index 0ee1dd592e..0000000000 --- a/experimental/DrawingBoard/SkColorPalette.h +++ /dev/null @@ -1,34 +0,0 @@ - -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#ifndef SkColorPalette_DEFINED -#define SkColorPalette_DEFINED - -#define PaletteSlots 5 -#define PalettePadding 5 -class SkColorPalette : public SkView { -public: - SkColorPalette(); - SkColor getColor() { return fCurrColor; } -protected: - virtual bool onEvent(const SkEvent& evt); - virtual void onDraw(SkCanvas* canvas); - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y); - virtual bool onClick(SkView::Click* click); - virtual void onSizeChange(); -private: - int selectSlot(SkPoint& cursorPosition); - SkColor selectColorFromGradient(SkPoint& cursorPosition); - int fSelected; - SkRect fGradientRect; - SkRect fSlotRect; - SkColor fCurrColor; - SkColor fColors[PaletteSlots]; - typedef SkView INHERITED; -}; - -#endif diff --git a/experimental/DrawingBoard/SkNetPipeController.cpp b/experimental/DrawingBoard/SkNetPipeController.cpp deleted file mode 100644 index 3e4ded5cf7..0000000000 --- a/experimental/DrawingBoard/SkNetPipeController.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "SkNetPipeController.h" - -SkNetPipeController::SkNetPipeController(SkCanvas* target) : fReader(target) { - fBlock = NULL; - fBlockSize = fBytesWritten = 0; - fPlayback = true; - fStatus = SkGPipeReader::kDone_Status; - fTotalWritten = 0; - fAtomsWritten = 0; -} -SkNetPipeController::~SkNetPipeController() { - sk_free(fBlock); -} - -int SkNetPipeController::writeToSocket(SkSocket* sockfd, SkSocket::DataType type) { - if (NULL != sockfd && fTotalWritten > 4) - return sockfd->writePacket(fBlock, fBytesWritten, type); - else - return -1; -} - -void* SkNetPipeController::requestBlock(size_t minRequest, size_t* actual) { - sk_free(fBlock); - - fBlockSize = minRequest * 4; - fBlock = sk_malloc_throw(fBlockSize); - fBytesWritten = 0; - *actual = fBlockSize; - return fBlock; -} - -void SkNetPipeController::notifyWritten(size_t bytes) { - SkASSERT(fBytesWritten + bytes <= fBlockSize); - - if (fPlayback) { - fStatus = fReader.playback((const char*)fBlock + fBytesWritten, bytes); - } - - SkASSERT(SkGPipeReader::kError_Status != fStatus); - fBytesWritten += bytes; - fTotalWritten += bytes; - - fAtomsWritten += 1; -} diff --git a/experimental/DrawingBoard/SkNetPipeController.h b/experimental/DrawingBoard/SkNetPipeController.h deleted file mode 100644 index 84b1714057..0000000000 --- a/experimental/DrawingBoard/SkNetPipeController.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#ifndef SkNetPipeController_DEFINED -#define SkNetPipeController_DEFINED -#include "SkTypes.h" -#include "SkCanvas.h" -#include "SkGPipe.h" -#include "SkSockets.h" -class SkNetPipeController : public SkGPipeController { -public: - SkNetPipeController(SkCanvas* target); - ~SkNetPipeController(); - - virtual void* requestBlock(size_t minRequest, size_t* actual); - virtual void notifyWritten(size_t bytes); - - int writeToSocket(SkSocket* sockfd, SkSocket::DataType type); - void enablePlayback() { fPlayback = true; } - void disablePlayback() { fPlayback = false; } - -private: - SkGPipeReader fReader; - bool fPlayback; - void* fBlock; - size_t fBlockSize; - size_t fBytesWritten; - int fAtomsWritten; - size_t fTotalWritten; - - SkGPipeReader::Status fStatus; -}; -#endif diff --git a/experimental/Networking/SampleNetPipeReader.cpp b/experimental/Networking/SampleNetPipeReader.cpp deleted file mode 100644 index aef5653594..0000000000 --- a/experimental/Networking/SampleNetPipeReader.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "SkGradientShader.h" -#include "SkGPipe.h" -#include "SkSockets.h" -#include "SkOSMenu.h" - -/** - * A simple networked pipe reader - * - * This view will connect to a user specified server, in this case meaning any - * Skia app that's has a SkTCPServer set up to broadcast its piped drawing data, - * received all the data transmitted and attempt to reproduce the drawing calls. - * This reader will only keep the latest batch of data. In order to keep up with - * the server, which may be producing data at a much higher rate than the reader - * is consuming, the reader will attempt multiple reads and only render the - * latest frame. this behavior can be adjusted by changing MAX_READS_PER_FRAME - * or disabled by setting fSync to false - */ - -#define MAX_READS_PER_FRAME 12 - -class NetPipeReaderView : public SampleView { -public: - NetPipeReaderView() { - fSocket = NULL; - fSync = true; - } - - ~NetPipeReaderView() { - if (fSocket) { - delete fSocket; - } - fDataArray.reset(); - } - virtual void requestMenu(SkOSMenu* menu) { - menu->setTitle("Net Pipe Reader"); - menu->appendTextField("Server IP", "Server IP", this->getSinkID(), - "IP address"); - menu->appendSwitch("Sync", "Sync", this->getSinkID(), fSync); - } - -protected: - static void readData(int cid, const void* data, size_t size, - SkSocket::DataType type, void* context) { - NetPipeReaderView* view = (NetPipeReaderView*)context; - view->onRead(data, size); - } - - void onRead(const void* data, size_t size) { - if (size > 0) - fDataArray.append(size, (const char*)data); - } - - bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SampleCode::TitleR(evt, "Net Pipe Reader"); - return true; - } - return this->INHERITED::onQuery(evt); - } - - bool onEvent(const SkEvent& evt) { - SkString s; - if (SkOSMenu::FindText(evt, "Server IP", &s)) { - if (NULL != fSocket) { - delete fSocket; - } - fSocket = new SkTCPClient(s.c_str()); - fSocket->connectToServer(); - SkDebugf("Connecting to %s\n", s.c_str()); - return true; - } - if (SkOSMenu::FindSwitchState(evt, "Sync", &fSync)) - return true; - return this->INHERITED::onEvent(evt); - } - - void onDrawContent(SkCanvas* canvas) { - if (NULL == fSocket) - return; - - if (fSocket->isConnected()) { - int dataToRemove = fDataArray.count(); - if (fSync) { - int numreads = 0; - while (fSocket->readPacket(readData, this) > 0 && - numreads < MAX_READS_PER_FRAME) { - // at this point, new data has been read and stored, discard - // old data since it's not needed anymore - SkASSERT(fDataArray.count() > dataToRemove); - fDataArray.remove(0, dataToRemove); - dataToRemove = fDataArray.count(); - ++numreads; - } - // clean up if max reads reached - if (numreads == MAX_READS_PER_FRAME && - fDataArray.count() > dataToRemove) - fDataArray.remove(0, dataToRemove); - } - else { - if (fSocket->readPacket(readData, this) > 0) - fDataArray.remove(0, dataToRemove); - } - } - else - fSocket->connectToServer(); - - SkGPipeReader reader(canvas); - size_t bytesRead; - SkGPipeReader::Status fStatus = reader.playback(fDataArray.begin(), - fDataArray.count(), - &bytesRead); - SkASSERT(SkGPipeReader::kError_Status != fStatus); - this->inval(NULL); - } - -private: - bool fSync; - SkTDArray<char> fDataArray; - SkTCPClient* fSocket; - typedef SampleView INHERITED; -}; - -/////////////////////////////////////////////////////////////////////////////// - -static SkView* MyFactory() { return new NetPipeReaderView; } -static SkViewRegister reg(MyFactory); |