Hi,
Also found out that through paint_op_helper's tostring method
<https://source.chromium.org/chromium/chromium/src/+/main:cc/test/paint_op_helper.cc;l=5;drc=6d5b8a58bbad4174871fb25c4f0fab5fb44771e1;bpv=1;bpt=1?q=paint_op_helper&sq=&ss=chromium%2Fchromium%2Fsrc>
, all the PaintOps related information can be printed. It includes all the
information- coordinates, paint info etc.
Wondering, can these be converted directly into SKIA commands to render the
page?
Please help me finalize the correct approach.


On Sun, May 5, 2024 at 3:49 AM Ken Russell <[email protected]> wrote:

> I'm not sure exactly how SkPicture recording works - please join
> https://groups.google.com/a/chromium.org/g/graphics-dev and email
> [email protected] .
>
> -Ken
>
>
>
> On Sat, May 4, 2024 at 6:21 AM Steven Whelan <[email protected]>
> wrote:
>
>> Hi I am able to write the serialized SKData (captured from Serialize
>> method of  paint_op_buffer_serializer
>> <https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_serializer&ss=chromium%2Fchromium%2Fsrc>
>>  as
>> shown in the first mail) to a file and was also able to use this file for
>> playback on canvas.
>> However, it only played back the text. How do I ensure that images also
>> get captured in my SKPicture recording? Do I have to have multiple
>> SKPictureRecording at multiple places?
>> Goal : To record everything being written on a canvas while loading  a
>> page so that it can be played back on another browser.
>>
>> Thanks
>>
>>
>>
>>
>> On Thursday, May 2, 2024 at 5:34:48 AM UTC+5:30 [email protected] wrote:
>>
>>> Yes - you can confirm this yourself - but we strongly recommend against
>>> disabling the renderer sandbox.
>>>
>>>
>>> On Tue, Apr 30, 2024 at 10:46 PM Steven Whelan <[email protected]>
>>> wrote:
>>>
>>>> Yes, trying to do this in renderer process. Would it work if I run
>>>> Chromium with --nosandbox flag.
>>>>
>>>> On Tue, Apr 30, 2024, 21:58 Ken Russell <[email protected]> wrote:
>>>>
>>>>> Are you trying to do this within Chrome's renderer or GPU processes?
>>>>> If so, the sandbox will prevent you from touching the local disk. You 
>>>>> would
>>>>> need to extend the sandbox policies to allow writing to a directory on 
>>>>> disk
>>>>> - some place that will not collide with other programs, so that if a bad
>>>>> actor causes data to be written to that directory, no harm will be caused.
>>>>> See
>>>>> https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/
>>>>> for the macOS sandbox policies.
>>>>>
>>>>> -Ken
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Apr 30, 2024 at 8:59 AM Steven Whelan <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi
>>>>>> I have modified the Serialize
>>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_ser&ss=chromium%2Fchromium%2Fsrc>
>>>>>>  method
>>>>>> to Record all PaintOp as SKPicture.
>>>>>> I want to replay this SKPicture on a remote browser. So, I am trying
>>>>>> to save this SKPicture to a file, but I am not able to do so, since
>>>>>> file.isOpen gives false.
>>>>>> Please help here
>>>>>>
>>>>>> void PaintOpBufferSerializer::Serialize(const PaintOpBuffer& buffer,
>>>>>>                                         const std::vector<size_t>*
>>>>>> offsets,
>>>>>>                                         const Preamble& preamble) {
>>>>>>   DCHECK_EQ(serialized_op_count_, 0u);
>>>>>>
>>>>>>   std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
>>>>>>   // These PlaybackParams use the initial (identity) canvas matrix,
>>>>>> as they are
>>>>>>   // only used for serializing the preamble and the initial save /
>>>>>> final restore
>>>>>>   // SerializeBuffer will create its own PlaybackParams based on the
>>>>>>
>>>>>>  * SkPictureRecorder recorder;*
>>>>>>  * SkCanvas* recordingCanvas =
>>>>>> recorder.beginRecording(canvas->getLocalClipBounds());         *
>>>>>>   // post-preamble canvas.
>>>>>>   PlaybackParams params = MakeParams(canvas.get());
>>>>>>   int save_count = canvas->getSaveCount();
>>>>>>   Save(canvas.get(), params);
>>>>>>   SerializePreamble(canvas.get(), preamble, params);
>>>>>>   SerializeBuffer(canvas.get(), buffer, offsets);
>>>>>>   *SerializeBuffer(recordingCanvas, buffer, offsets);*
>>>>>>
>>>>>>
>>>>>> *sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
>>>>>> SkSerialProcs sProcs;  sk_sp<SkData> readableData =
>>>>>> picture->serialize(&sProcs);*
>>>>>>   // Assuming the byte array is stored in the 'data' field of the
>>>>>> SkData object
>>>>>>   const void* data = readableData->data();
>>>>>>   size_t size = readableData->size();
>>>>>>
>>>>>> * <HOW TO SAVE READABLE DATA TO A FILE>*
>>>>>>   /*sk_sp<SkData> receievedData = SkData::MakeWithoutCopy(data, size);
>>>>>>   sk_sp<SkPicture> copy =
>>>>>>       SkPicture::MakeFromData(receievedData->data(),
>>>>>> receievedData->size());
>>>>>>   copy->playback(recordingCanvas);*/
>>>>>>   RestoreToCount(canvas.get(), save_count, params);
>>>>>> }
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "blink-dev" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org
>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAO%2BCLgAgnWdtj1%3D2-rksbcVr5CjsKMn3e-k_sYYCJEr%2BrU%3D0ew%40mail.gmail.com.

Reply via email to