From 4e6363a4b089f77d9fecb6bb3ee2abf55b794a20 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sun, 22 Dec 2019 23:01:54 +0800 Subject: [PATCH 01/19] =?UTF-8?q?wire=20=E5=8F=8D=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ponycui_home/svgaplayer/MainActivity.java | 73 ++- library/build.gradle | 7 +- .../opensource/svgaplayer/SVGAImageView.kt | 2 - .../svgaplayer/proto/AudioEntity.java | 106 +--- .../svgaplayer/proto/FrameEntity.java | 112 +--- .../opensource/svgaplayer/proto/Layout.java | 93 +-- .../svgaplayer/proto/MovieEntity.java | 117 +--- .../svgaplayer/proto/MovieParams.java | 97 +-- .../svgaplayer/proto/ShapeEntity.java | 572 +++--------------- .../svgaplayer/proto/SpriteEntity.java | 92 +-- .../svgaplayer/proto/Transform.java | 110 +--- 11 files changed, 285 insertions(+), 1096 deletions(-) diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java index d778582a..fc0ff25b 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java @@ -1,49 +1,27 @@ package com.example.ponycui_home.svgaplayer; -import android.app.Activity; import android.content.Intent; import android.database.DataSetObserver; -import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.Paint; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; -import android.text.Layout; -import android.text.Spannable; -import android.text.SpannableStringBuilder; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.text.style.ForegroundColorSpan; +import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; -import com.opensource.svgaplayer.SVGADrawable; -import com.opensource.svgaplayer.SVGADynamicEntity; -import com.opensource.svgaplayer.SVGAImageView; -import com.opensource.svgaplayer.SVGAParser; -import com.opensource.svgaplayer.SVGAPlayer; -import com.opensource.svgaplayer.SVGAVideoEntity; +import com.opensource.svgaplayer.proto.AudioEntity; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; import java.util.ArrayList; -import java.util.List; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; -import kotlin.jvm.functions.Function2; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; +import ikxd.cproxy.InnerV2; +import okio.ByteString; class SampleItem { @@ -61,13 +39,52 @@ public class MainActivity extends AppCompatActivity { ListView listView; ArrayList items = new ArrayList(); + private byte[] bytes; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setupData(); this.setupListView(); - setContentView(listView); + LinearLayout linearLayout = new LinearLayout(this); + linearLayout.setOrientation(LinearLayout.VERTICAL); + linearLayout.addView(listView); + setContentView(linearLayout); + + Button ser1 = new Button(this); + ser1.setText("序列化"); + linearLayout.addView(ser1); + Button ser2 = new Button(this); + ser2.setText("反序列化"); + linearLayout.addView(ser2); + + ser1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AudioEntity entity = new AudioEntity.Builder().audioKey("dsds").totalTime(33).build(); + byte[] payload = entity.encode(); + InnerV2 innerV2 = new InnerV2.Builder().payload(ByteString.of(payload)).build(); + bytes = innerV2.encode(); + Log.i("chenrenzhan-2", "序列化 payload " + payload.length + " , entity" + entity + " , inner2 " + innerV2); + } + }); + ser2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + InnerV2 innerV2 = null; + try { + innerV2 = InnerV2.ADAPTER.decode(bytes); + AudioEntity entity = AudioEntity.ADAPTER.decode(innerV2.payload); + Log.i("chenrenzhan-2", "反序列化 payload " + innerV2.payload.size() + " , entity" + entity + " , " + + "innerV2" + innerV2); + Log.i("chenrenzhan-2", "反序列化 uri " + innerV2.uri); + Log.i("chenrenzhan-2", "反序列化 startFrame " + entity.startFrame); + } catch (Exception e) { + e.printStackTrace(); + Log.i("dd", e.getMessage()); + } + } + }); } void setupData() { diff --git a/library/build.gradle b/library/build.gradle index 793d0c5d..66d81bc4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -29,8 +29,11 @@ android { } dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.squareup.wire:wire-runtime:2.3.0-RC1' +// api fileTree(include: ['*.jar'], dir: 'libs') + compileOnly fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.squareup.okio:okio:2.4.2' + +// implementation 'com.squareup.wire:wire-runtime:3.0.2' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } repositories { diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt index cca4c26d..0bbd0a98 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt @@ -4,7 +4,6 @@ import android.animation.Animator import android.animation.ValueAnimator import android.annotation.SuppressLint import android.content.Context -import android.graphics.drawable.Drawable import android.os.Build import android.util.AttributeSet import android.util.Log @@ -13,7 +12,6 @@ import android.view.View import android.view.animation.LinearInterpolator import android.widget.ImageView import com.opensource.svgaplayer.utils.SVGARange -import java.lang.ref.WeakReference import java.net.URL /** diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java index d09adce9..261d49f6 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java @@ -1,24 +1,19 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 19:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Integer; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import okio.ByteString; -public final class AudioEntity extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_AudioEntity(); +public final class AudioEntity extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(AudioEntity.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -37,7 +32,8 @@ public final class AudioEntity extends Message */ @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#STRING" + adapter = "com.squareup.wire.ProtoAdapter#STRING", + returnDefaultValue = false ) public final String audioKey; @@ -46,7 +42,8 @@ public final class AudioEntity extends Message */ @WireField( tag = 2, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer startFrame; @@ -55,7 +52,8 @@ public final class AudioEntity extends Message */ @WireField( tag = 3, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer endFrame; @@ -64,7 +62,8 @@ public final class AudioEntity extends Message */ @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer startTime; @@ -73,15 +72,18 @@ public final class AudioEntity extends Message */ @WireField( tag = 5, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer totalTime; - public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, Integer totalTime) { + public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, + Integer totalTime) { this(audioKey, startFrame, endFrame, startTime, totalTime, ByteString.EMPTY); } - public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, Integer totalTime, ByteString unknownFields) { + public AudioEntity(String audioKey, Integer startFrame, Integer endFrame, Integer startTime, + Integer totalTime, ByteString unknownFields) { super(ADAPTER, unknownFields); this.audioKey = audioKey; this.startFrame = startFrame; @@ -130,17 +132,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (audioKey != null) builder.append(", audioKey=").append(audioKey); - if (startFrame != null) builder.append(", startFrame=").append(startFrame); - if (endFrame != null) builder.append(", endFrame=").append(endFrame); - if (startTime != null) builder.append(", startTime=").append(startTime); - if (totalTime != null) builder.append(", totalTime=").append(totalTime); - return builder.replace(0, 2, "AudioEntity{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public String audioKey; @@ -200,59 +191,4 @@ public AudioEntity build() { return new AudioEntity(audioKey, startFrame, endFrame, startTime, totalTime, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_AudioEntity extends ProtoAdapter { - ProtoAdapter_AudioEntity() { - super(FieldEncoding.LENGTH_DELIMITED, AudioEntity.class); - } - - @Override - public int encodedSize(AudioEntity value) { - return (value.audioKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.audioKey) : 0) - + (value.startFrame != null ? ProtoAdapter.INT32.encodedSizeWithTag(2, value.startFrame) : 0) - + (value.endFrame != null ? ProtoAdapter.INT32.encodedSizeWithTag(3, value.endFrame) : 0) - + (value.startTime != null ? ProtoAdapter.INT32.encodedSizeWithTag(4, value.startTime) : 0) - + (value.totalTime != null ? ProtoAdapter.INT32.encodedSizeWithTag(5, value.totalTime) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, AudioEntity value) throws IOException { - if (value.audioKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.audioKey); - if (value.startFrame != null) ProtoAdapter.INT32.encodeWithTag(writer, 2, value.startFrame); - if (value.endFrame != null) ProtoAdapter.INT32.encodeWithTag(writer, 3, value.endFrame); - if (value.startTime != null) ProtoAdapter.INT32.encodeWithTag(writer, 4, value.startTime); - if (value.totalTime != null) ProtoAdapter.INT32.encodeWithTag(writer, 5, value.totalTime); - writer.writeBytes(value.unknownFields()); - } - - @Override - public AudioEntity decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.audioKey(ProtoAdapter.STRING.decode(reader)); break; - case 2: builder.startFrame(ProtoAdapter.INT32.decode(reader)); break; - case 3: builder.endFrame(ProtoAdapter.INT32.decode(reader)); break; - case 4: builder.startTime(ProtoAdapter.INT32.decode(reader)); break; - case 5: builder.totalTime(ProtoAdapter.INT32.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public AudioEntity redact(AudioEntity value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java index ac701bb4..4f43e512 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java @@ -1,25 +1,21 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 115:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Float; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import java.util.List; + import okio.ByteString; -public final class FrameEntity extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_FrameEntity(); +public final class FrameEntity extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(FrameEntity.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -32,7 +28,8 @@ public final class FrameEntity extends Message */ @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float alpha; @@ -41,7 +38,8 @@ public final class FrameEntity extends Message */ @WireField( tag = 2, - adapter = "com.opensource.svgaplayer.proto.Layout#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.Layout#ADAPTER", + returnDefaultValue = false ) public final Layout layout; @@ -50,7 +48,8 @@ public final class FrameEntity extends Message */ @WireField( tag = 3, - adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER", + returnDefaultValue = false ) public final Transform transform; @@ -59,7 +58,8 @@ public final class FrameEntity extends Message */ @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#STRING" + adapter = "com.squareup.wire.ProtoAdapter#STRING", + returnDefaultValue = false ) public final String clipPath; @@ -69,15 +69,18 @@ public final class FrameEntity extends Message @WireField( tag = 5, adapter = "com.opensource.svgaplayer.proto.ShapeEntity#ADAPTER", - label = WireField.Label.REPEATED + label = WireField.Label.REPEATED, + returnDefaultValue = false ) public final List shapes; - public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, List shapes) { + public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, + List shapes) { this(alpha, layout, transform, clipPath, shapes, ByteString.EMPTY); } - public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, List shapes, ByteString unknownFields) { + public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, + List shapes, ByteString unknownFields) { super(ADAPTER, unknownFields); this.alpha = alpha; this.layout = layout; @@ -93,7 +96,7 @@ public Builder newBuilder() { builder.layout = layout; builder.transform = transform; builder.clipPath = clipPath; - builder.shapes = Internal.copyOf("shapes", shapes); + builder.shapes = Internal.copyOf(shapes); builder.addUnknownFields(unknownFields()); return builder; } @@ -126,17 +129,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (alpha != null) builder.append(", alpha=").append(alpha); - if (layout != null) builder.append(", layout=").append(layout); - if (transform != null) builder.append(", transform=").append(transform); - if (clipPath != null) builder.append(", clipPath=").append(clipPath); - if (!shapes.isEmpty()) builder.append(", shapes=").append(shapes); - return builder.replace(0, 2, "FrameEntity{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public Float alpha; @@ -198,62 +190,4 @@ public FrameEntity build() { return new FrameEntity(alpha, layout, transform, clipPath, shapes, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_FrameEntity extends ProtoAdapter { - ProtoAdapter_FrameEntity() { - super(FieldEncoding.LENGTH_DELIMITED, FrameEntity.class); - } - - @Override - public int encodedSize(FrameEntity value) { - return (value.alpha != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.alpha) : 0) - + (value.layout != null ? Layout.ADAPTER.encodedSizeWithTag(2, value.layout) : 0) - + (value.transform != null ? Transform.ADAPTER.encodedSizeWithTag(3, value.transform) : 0) - + (value.clipPath != null ? ProtoAdapter.STRING.encodedSizeWithTag(4, value.clipPath) : 0) - + ShapeEntity.ADAPTER.asRepeated().encodedSizeWithTag(5, value.shapes) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, FrameEntity value) throws IOException { - if (value.alpha != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.alpha); - if (value.layout != null) Layout.ADAPTER.encodeWithTag(writer, 2, value.layout); - if (value.transform != null) Transform.ADAPTER.encodeWithTag(writer, 3, value.transform); - if (value.clipPath != null) ProtoAdapter.STRING.encodeWithTag(writer, 4, value.clipPath); - ShapeEntity.ADAPTER.asRepeated().encodeWithTag(writer, 5, value.shapes); - writer.writeBytes(value.unknownFields()); - } - - @Override - public FrameEntity decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.alpha(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.layout(Layout.ADAPTER.decode(reader)); break; - case 3: builder.transform(Transform.ADAPTER.decode(reader)); break; - case 4: builder.clipPath(ProtoAdapter.STRING.decode(reader)); break; - case 5: builder.shapes.add(ShapeEntity.ADAPTER.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public FrameEntity redact(FrameEntity value) { - Builder builder = value.newBuilder(); - if (builder.layout != null) builder.layout = Layout.ADAPTER.redact(builder.layout); - if (builder.transform != null) builder.transform = Transform.ADAPTER.redact(builder.transform); - Internal.redactElements(builder.shapes, ShapeEntity.ADAPTER); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java index 6ea7edb6..519a9a0a 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java @@ -1,24 +1,19 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 27:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Float; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import okio.ByteString; -public final class Layout extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_Layout(); +public final class Layout extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Layout.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -32,25 +27,29 @@ public final class Layout extends Message { @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float x; @WireField( tag = 2, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float y; @WireField( tag = 3, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float width; @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float height; @@ -103,16 +102,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (x != null) builder.append(", x=").append(x); - if (y != null) builder.append(", y=").append(y); - if (width != null) builder.append(", width=").append(width); - if (height != null) builder.append(", height=").append(height); - return builder.replace(0, 2, "Layout{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public Float x; @@ -150,56 +139,4 @@ public Layout build() { return new Layout(x, y, width, height, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_Layout extends ProtoAdapter { - ProtoAdapter_Layout() { - super(FieldEncoding.LENGTH_DELIMITED, Layout.class); - } - - @Override - public int encodedSize(Layout value) { - return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) - + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) - + (value.width != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.width) : 0) - + (value.height != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.height) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, Layout value) throws IOException { - if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); - if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); - if (value.width != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.width); - if (value.height != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.height); - writer.writeBytes(value.unknownFields()); - } - - @Override - public Layout decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.width(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: builder.height(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public Layout redact(Layout value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java index 6b720af4..d9023c1e 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java @@ -1,25 +1,22 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 123:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import java.util.List; import java.util.Map; + import okio.ByteString; -public final class MovieEntity extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_MovieEntity(); +public final class MovieEntity extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(MovieEntity.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -30,7 +27,8 @@ public final class MovieEntity extends Message */ @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#STRING" + adapter = "com.squareup.wire.ProtoAdapter#STRING", + returnDefaultValue = false ) public final String version; @@ -39,7 +37,8 @@ public final class MovieEntity extends Message */ @WireField( tag = 2, - adapter = "com.opensource.svgaplayer.proto.MovieParams#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.MovieParams#ADAPTER", + returnDefaultValue = false ) public final MovieParams params; @@ -49,7 +48,8 @@ public final class MovieEntity extends Message @WireField( tag = 3, keyAdapter = "com.squareup.wire.ProtoAdapter#STRING", - adapter = "com.squareup.wire.ProtoAdapter#BYTES" + adapter = "com.squareup.wire.ProtoAdapter#BYTES", + returnDefaultValue = false ) public final Map images; @@ -59,7 +59,8 @@ public final class MovieEntity extends Message @WireField( tag = 4, adapter = "com.opensource.svgaplayer.proto.SpriteEntity#ADAPTER", - label = WireField.Label.REPEATED + label = WireField.Label.REPEATED, + returnDefaultValue = false ) public final List sprites; @@ -69,15 +70,18 @@ public final class MovieEntity extends Message @WireField( tag = 5, adapter = "com.opensource.svgaplayer.proto.AudioEntity#ADAPTER", - label = WireField.Label.REPEATED + label = WireField.Label.REPEATED, + returnDefaultValue = false ) public final List audios; - public MovieEntity(String version, MovieParams params, Map images, List sprites, List audios) { + public MovieEntity(String version, MovieParams params, Map images, + List sprites, List audios) { this(version, params, images, sprites, audios, ByteString.EMPTY); } - public MovieEntity(String version, MovieParams params, Map images, List sprites, List audios, ByteString unknownFields) { + public MovieEntity(String version, MovieParams params, Map images, + List sprites, List audios, ByteString unknownFields) { super(ADAPTER, unknownFields); this.version = version; this.params = params; @@ -91,9 +95,9 @@ public Builder newBuilder() { Builder builder = new Builder(); builder.version = version; builder.params = params; - builder.images = Internal.copyOf("images", images); - builder.sprites = Internal.copyOf("sprites", sprites); - builder.audios = Internal.copyOf("audios", audios); + builder.images = Internal.copyOf(images); + builder.sprites = Internal.copyOf(sprites); + builder.audios = Internal.copyOf(audios); builder.addUnknownFields(unknownFields()); return builder; } @@ -126,17 +130,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (version != null) builder.append(", version=").append(version); - if (params != null) builder.append(", params=").append(params); - if (!images.isEmpty()) builder.append(", images=").append(images); - if (!sprites.isEmpty()) builder.append(", sprites=").append(sprites); - if (!audios.isEmpty()) builder.append(", audios=").append(audios); - return builder.replace(0, 2, "MovieEntity{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public String version; @@ -202,64 +195,4 @@ public MovieEntity build() { return new MovieEntity(version, params, images, sprites, audios, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_MovieEntity extends ProtoAdapter { - private final ProtoAdapter> images = ProtoAdapter.newMapAdapter(ProtoAdapter.STRING, ProtoAdapter.BYTES); - - ProtoAdapter_MovieEntity() { - super(FieldEncoding.LENGTH_DELIMITED, MovieEntity.class); - } - - @Override - public int encodedSize(MovieEntity value) { - return (value.version != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.version) : 0) - + (value.params != null ? MovieParams.ADAPTER.encodedSizeWithTag(2, value.params) : 0) - + images.encodedSizeWithTag(3, value.images) - + SpriteEntity.ADAPTER.asRepeated().encodedSizeWithTag(4, value.sprites) - + AudioEntity.ADAPTER.asRepeated().encodedSizeWithTag(5, value.audios) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, MovieEntity value) throws IOException { - if (value.version != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.version); - if (value.params != null) MovieParams.ADAPTER.encodeWithTag(writer, 2, value.params); - images.encodeWithTag(writer, 3, value.images); - SpriteEntity.ADAPTER.asRepeated().encodeWithTag(writer, 4, value.sprites); - AudioEntity.ADAPTER.asRepeated().encodeWithTag(writer, 5, value.audios); - writer.writeBytes(value.unknownFields()); - } - - @Override - public MovieEntity decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.version(ProtoAdapter.STRING.decode(reader)); break; - case 2: builder.params(MovieParams.ADAPTER.decode(reader)); break; - case 3: builder.images.putAll(images.decode(reader)); break; - case 4: builder.sprites.add(SpriteEntity.ADAPTER.decode(reader)); break; - case 5: builder.audios.add(AudioEntity.ADAPTER.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public MovieEntity redact(MovieEntity value) { - Builder builder = value.newBuilder(); - if (builder.params != null) builder.params = MovieParams.ADAPTER.redact(builder.params); - Internal.redactElements(builder.sprites, SpriteEntity.ADAPTER); - Internal.redactElements(builder.audios, AudioEntity.ADAPTER); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java index e8a3a98b..92761892 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java @@ -1,25 +1,19 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 6:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Float; -import java.lang.Integer; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import okio.ByteString; -public final class MovieParams extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_MovieParams(); +public final class MovieParams extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(MovieParams.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -36,7 +30,8 @@ public final class MovieParams extends Message */ @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float viewBoxWidth; @@ -45,7 +40,8 @@ public final class MovieParams extends Message */ @WireField( tag = 2, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float viewBoxHeight; @@ -54,7 +50,8 @@ public final class MovieParams extends Message */ @WireField( tag = 3, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer fps; @@ -63,7 +60,8 @@ public final class MovieParams extends Message */ @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#INT32" + adapter = "com.squareup.wire.ProtoAdapter#INT32", + returnDefaultValue = false ) public final Integer frames; @@ -71,7 +69,8 @@ public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer this(viewBoxWidth, viewBoxHeight, fps, frames, ByteString.EMPTY); } - public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer frames, ByteString unknownFields) { + public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer frames, + ByteString unknownFields) { super(ADAPTER, unknownFields); this.viewBoxWidth = viewBoxWidth; this.viewBoxHeight = viewBoxHeight; @@ -116,16 +115,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (viewBoxWidth != null) builder.append(", viewBoxWidth=").append(viewBoxWidth); - if (viewBoxHeight != null) builder.append(", viewBoxHeight=").append(viewBoxHeight); - if (fps != null) builder.append(", fps=").append(fps); - if (frames != null) builder.append(", frames=").append(frames); - return builder.replace(0, 2, "MovieParams{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public Float viewBoxWidth; @@ -175,56 +164,4 @@ public MovieParams build() { return new MovieParams(viewBoxWidth, viewBoxHeight, fps, frames, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_MovieParams extends ProtoAdapter { - ProtoAdapter_MovieParams() { - super(FieldEncoding.LENGTH_DELIMITED, MovieParams.class); - } - - @Override - public int encodedSize(MovieParams value) { - return (value.viewBoxWidth != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.viewBoxWidth) : 0) - + (value.viewBoxHeight != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.viewBoxHeight) : 0) - + (value.fps != null ? ProtoAdapter.INT32.encodedSizeWithTag(3, value.fps) : 0) - + (value.frames != null ? ProtoAdapter.INT32.encodedSizeWithTag(4, value.frames) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, MovieParams value) throws IOException { - if (value.viewBoxWidth != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.viewBoxWidth); - if (value.viewBoxHeight != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.viewBoxHeight); - if (value.fps != null) ProtoAdapter.INT32.encodeWithTag(writer, 3, value.fps); - if (value.frames != null) ProtoAdapter.INT32.encodeWithTag(writer, 4, value.frames); - writer.writeBytes(value.unknownFields()); - } - - @Override - public MovieParams decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.viewBoxWidth(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.viewBoxHeight(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.fps(ProtoAdapter.INT32.decode(reader)); break; - case 4: builder.frames(ProtoAdapter.INT32.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public MovieParams redact(MovieParams value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java index 024faace..c484efc8 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java @@ -1,25 +1,20 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 43:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireEnum; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Float; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import okio.ByteString; -public final class ShapeEntity extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeEntity(); +public final class ShapeEntity extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeEntity.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -30,7 +25,8 @@ public final class ShapeEntity extends Message */ @WireField( tag = 1, - adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeType#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeType#ADAPTER", + returnDefaultValue = false ) public final ShapeType type; @@ -40,7 +36,8 @@ public final class ShapeEntity extends Message */ @WireField( tag = 10, - adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeStyle#ADAPTER", + returnDefaultValue = false ) public final ShapeStyle styles; @@ -49,33 +46,39 @@ public final class ShapeEntity extends Message */ @WireField( tag = 11, - adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.Transform#ADAPTER", + returnDefaultValue = false ) public final Transform transform; @WireField( tag = 2, - adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeArgs#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$ShapeArgs#ADAPTER", + returnDefaultValue = false ) public final ShapeArgs shape; @WireField( tag = 3, - adapter = "com.opensource.svgaplayer.proto.ShapeEntity$RectArgs#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$RectArgs#ADAPTER", + returnDefaultValue = false ) public final RectArgs rect; @WireField( tag = 4, - adapter = "com.opensource.svgaplayer.proto.ShapeEntity$EllipseArgs#ADAPTER" + adapter = "com.opensource.svgaplayer.proto.ShapeEntity$EllipseArgs#ADAPTER", + returnDefaultValue = false ) public final EllipseArgs ellipse; - public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, RectArgs rect, EllipseArgs ellipse) { + public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, + RectArgs rect, EllipseArgs ellipse) { this(type, styles, transform, shape, rect, ellipse, ByteString.EMPTY); } - public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, RectArgs rect, EllipseArgs ellipse, ByteString unknownFields) { + public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, ShapeArgs shape, + RectArgs rect, EllipseArgs ellipse, ByteString unknownFields) { super(ADAPTER, unknownFields); if (Internal.countNonNull(shape, rect, ellipse) > 1) { throw new IllegalArgumentException("at most one of shape, rect, ellipse may be non-null"); @@ -131,18 +134,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (type != null) builder.append(", type=").append(type); - if (styles != null) builder.append(", styles=").append(styles); - if (transform != null) builder.append(", transform=").append(transform); - if (shape != null) builder.append(", shape=").append(shape); - if (rect != null) builder.append(", rect=").append(rect); - if (ellipse != null) builder.append(", ellipse=").append(ellipse); - return builder.replace(0, 2, "ShapeEntity{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public ShapeType type; @@ -259,8 +250,10 @@ public int getValue() { } } - public static final class ShapeArgs extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeArgs(); + public static final class ShapeArgs extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeArgs.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -271,7 +264,8 @@ public static final class ShapeArgs extends Message { public String d; @@ -338,53 +325,12 @@ public ShapeArgs build() { return new ShapeArgs(d, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_ShapeArgs extends ProtoAdapter { - ProtoAdapter_ShapeArgs() { - super(FieldEncoding.LENGTH_DELIMITED, ShapeArgs.class); - } - - @Override - public int encodedSize(ShapeArgs value) { - return (value.d != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.d) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, ShapeArgs value) throws IOException { - if (value.d != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.d); - writer.writeBytes(value.unknownFields()); - } - - @Override - public ShapeArgs decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.d(ProtoAdapter.STRING.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public ShapeArgs redact(ShapeArgs value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } - public static final class RectArgs extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_RectArgs(); + public static final class RectArgs extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(RectArgs.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -400,25 +346,29 @@ public static final class RectArgs extends Message { @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float x; @WireField( tag = 2, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float y; @WireField( tag = 3, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float width; @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float height; @@ -427,7 +377,8 @@ public static final class RectArgs extends Message { */ @WireField( tag = 5, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float cornerRadius; @@ -435,7 +386,8 @@ public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius) this(x, y, width, height, cornerRadius, ByteString.EMPTY); } - public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius, ByteString unknownFields) { + public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius, + ByteString unknownFields) { super(ADAPTER, unknownFields); this.x = x; this.y = y; @@ -484,17 +436,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (x != null) builder.append(", x=").append(x); - if (y != null) builder.append(", y=").append(y); - if (width != null) builder.append(", width=").append(width); - if (height != null) builder.append(", height=").append(height); - if (cornerRadius != null) builder.append(", cornerRadius=").append(cornerRadius); - return builder.replace(0, 2, "RectArgs{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public Float x; @@ -542,65 +483,12 @@ public RectArgs build() { return new RectArgs(x, y, width, height, cornerRadius, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_RectArgs extends ProtoAdapter { - ProtoAdapter_RectArgs() { - super(FieldEncoding.LENGTH_DELIMITED, RectArgs.class); - } - - @Override - public int encodedSize(RectArgs value) { - return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) - + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) - + (value.width != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.width) : 0) - + (value.height != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.height) : 0) - + (value.cornerRadius != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(5, value.cornerRadius) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, RectArgs value) throws IOException { - if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); - if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); - if (value.width != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.width); - if (value.height != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.height); - if (value.cornerRadius != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 5, value.cornerRadius); - writer.writeBytes(value.unknownFields()); - } - - @Override - public RectArgs decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.width(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: builder.height(ProtoAdapter.FLOAT.decode(reader)); break; - case 5: builder.cornerRadius(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public RectArgs redact(RectArgs value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } - public static final class EllipseArgs extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_EllipseArgs(); + public static final class EllipseArgs extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(EllipseArgs.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -617,7 +505,8 @@ public static final class EllipseArgs extends Message { public Float x; @@ -756,62 +638,12 @@ public EllipseArgs build() { return new EllipseArgs(x, y, radiusX, radiusY, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_EllipseArgs extends ProtoAdapter { - ProtoAdapter_EllipseArgs() { - super(FieldEncoding.LENGTH_DELIMITED, EllipseArgs.class); - } - - @Override - public int encodedSize(EllipseArgs value) { - return (value.x != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.x) : 0) - + (value.y != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.y) : 0) - + (value.radiusX != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.radiusX) : 0) - + (value.radiusY != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.radiusY) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, EllipseArgs value) throws IOException { - if (value.x != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.x); - if (value.y != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.y); - if (value.radiusX != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.radiusX); - if (value.radiusY != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.radiusY); - writer.writeBytes(value.unknownFields()); - } - - @Override - public EllipseArgs decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.x(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.y(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.radiusX(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: builder.radiusY(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public EllipseArgs redact(EllipseArgs value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } - public static final class ShapeStyle extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_ShapeStyle(); + public static final class ShapeStyle extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeStyle.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -834,7 +666,8 @@ public static final class ShapeStyle extends Message { public RGBAColor fill; @@ -1094,8 +923,10 @@ public ShapeStyle build() { } } - public static final class RGBAColor extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_RGBAColor(); + public static final class RGBAColor extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(RGBAColor.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -1109,25 +940,29 @@ public static final class RGBAColor extends Message { public Float r; @@ -1227,58 +1052,6 @@ public RGBAColor build() { return new RGBAColor(r, g, b, a, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_RGBAColor extends ProtoAdapter { - ProtoAdapter_RGBAColor() { - super(FieldEncoding.LENGTH_DELIMITED, RGBAColor.class); - } - - @Override - public int encodedSize(RGBAColor value) { - return (value.r != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.r) : 0) - + (value.g != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.g) : 0) - + (value.b != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.b) : 0) - + (value.a != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.a) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, RGBAColor value) throws IOException { - if (value.r != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.r); - if (value.g != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.g); - if (value.b != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.b); - if (value.a != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.a); - writer.writeBytes(value.unknownFields()); - } - - @Override - public RGBAColor decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.r(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.g(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.b(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: builder.a(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public RGBAColor redact(RGBAColor value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } public enum LineCap implements WireEnum { @@ -1346,158 +1119,5 @@ public int getValue() { return value; } } - - private static final class ProtoAdapter_ShapeStyle extends ProtoAdapter { - ProtoAdapter_ShapeStyle() { - super(FieldEncoding.LENGTH_DELIMITED, ShapeStyle.class); - } - - @Override - public int encodedSize(ShapeStyle value) { - return (value.fill != null ? RGBAColor.ADAPTER.encodedSizeWithTag(1, value.fill) : 0) - + (value.stroke != null ? RGBAColor.ADAPTER.encodedSizeWithTag(2, value.stroke) : 0) - + (value.strokeWidth != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.strokeWidth) : 0) - + (value.lineCap != null ? LineCap.ADAPTER.encodedSizeWithTag(4, value.lineCap) : 0) - + (value.lineJoin != null ? LineJoin.ADAPTER.encodedSizeWithTag(5, value.lineJoin) : 0) - + (value.miterLimit != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(6, value.miterLimit) : 0) - + (value.lineDashI != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(7, value.lineDashI) : 0) - + (value.lineDashII != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(8, value.lineDashII) : 0) - + (value.lineDashIII != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(9, value.lineDashIII) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, ShapeStyle value) throws IOException { - if (value.fill != null) RGBAColor.ADAPTER.encodeWithTag(writer, 1, value.fill); - if (value.stroke != null) RGBAColor.ADAPTER.encodeWithTag(writer, 2, value.stroke); - if (value.strokeWidth != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.strokeWidth); - if (value.lineCap != null) LineCap.ADAPTER.encodeWithTag(writer, 4, value.lineCap); - if (value.lineJoin != null) LineJoin.ADAPTER.encodeWithTag(writer, 5, value.lineJoin); - if (value.miterLimit != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 6, value.miterLimit); - if (value.lineDashI != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 7, value.lineDashI); - if (value.lineDashII != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 8, value.lineDashII); - if (value.lineDashIII != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 9, value.lineDashIII); - writer.writeBytes(value.unknownFields()); - } - - @Override - public ShapeStyle decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.fill(RGBAColor.ADAPTER.decode(reader)); break; - case 2: builder.stroke(RGBAColor.ADAPTER.decode(reader)); break; - case 3: builder.strokeWidth(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: { - try { - builder.lineCap(LineCap.ADAPTER.decode(reader)); - } catch (ProtoAdapter.EnumConstantNotFoundException e) { - builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); - } - break; - } - case 5: { - try { - builder.lineJoin(LineJoin.ADAPTER.decode(reader)); - } catch (ProtoAdapter.EnumConstantNotFoundException e) { - builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); - } - break; - } - case 6: builder.miterLimit(ProtoAdapter.FLOAT.decode(reader)); break; - case 7: builder.lineDashI(ProtoAdapter.FLOAT.decode(reader)); break; - case 8: builder.lineDashII(ProtoAdapter.FLOAT.decode(reader)); break; - case 9: builder.lineDashIII(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public ShapeStyle redact(ShapeStyle value) { - Builder builder = value.newBuilder(); - if (builder.fill != null) builder.fill = RGBAColor.ADAPTER.redact(builder.fill); - if (builder.stroke != null) builder.stroke = RGBAColor.ADAPTER.redact(builder.stroke); - builder.clearUnknownFields(); - return builder.build(); - } - } - } - - private static final class ProtoAdapter_ShapeEntity extends ProtoAdapter { - ProtoAdapter_ShapeEntity() { - super(FieldEncoding.LENGTH_DELIMITED, ShapeEntity.class); - } - - @Override - public int encodedSize(ShapeEntity value) { - return (value.type != null ? ShapeType.ADAPTER.encodedSizeWithTag(1, value.type) : 0) - + (value.styles != null ? ShapeStyle.ADAPTER.encodedSizeWithTag(10, value.styles) : 0) - + (value.transform != null ? Transform.ADAPTER.encodedSizeWithTag(11, value.transform) : 0) - + (value.shape != null ? ShapeArgs.ADAPTER.encodedSizeWithTag(2, value.shape) : 0) - + (value.rect != null ? RectArgs.ADAPTER.encodedSizeWithTag(3, value.rect) : 0) - + (value.ellipse != null ? EllipseArgs.ADAPTER.encodedSizeWithTag(4, value.ellipse) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, ShapeEntity value) throws IOException { - if (value.type != null) ShapeType.ADAPTER.encodeWithTag(writer, 1, value.type); - if (value.styles != null) ShapeStyle.ADAPTER.encodeWithTag(writer, 10, value.styles); - if (value.transform != null) Transform.ADAPTER.encodeWithTag(writer, 11, value.transform); - if (value.shape != null) ShapeArgs.ADAPTER.encodeWithTag(writer, 2, value.shape); - if (value.rect != null) RectArgs.ADAPTER.encodeWithTag(writer, 3, value.rect); - if (value.ellipse != null) EllipseArgs.ADAPTER.encodeWithTag(writer, 4, value.ellipse); - writer.writeBytes(value.unknownFields()); - } - - @Override - public ShapeEntity decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: { - try { - builder.type(ShapeType.ADAPTER.decode(reader)); - } catch (ProtoAdapter.EnumConstantNotFoundException e) { - builder.addUnknownField(tag, FieldEncoding.VARINT, (long) e.value); - } - break; - } - case 10: builder.styles(ShapeStyle.ADAPTER.decode(reader)); break; - case 11: builder.transform(Transform.ADAPTER.decode(reader)); break; - case 2: builder.shape(ShapeArgs.ADAPTER.decode(reader)); break; - case 3: builder.rect(RectArgs.ADAPTER.decode(reader)); break; - case 4: builder.ellipse(EllipseArgs.ADAPTER.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public ShapeEntity redact(ShapeEntity value) { - Builder builder = value.newBuilder(); - if (builder.styles != null) builder.styles = ShapeStyle.ADAPTER.redact(builder.styles); - if (builder.transform != null) builder.transform = Transform.ADAPTER.redact(builder.transform); - if (builder.shape != null) builder.shape = ShapeArgs.ADAPTER.redact(builder.shape); - if (builder.rect != null) builder.rect = RectArgs.ADAPTER.redact(builder.rect); - if (builder.ellipse != null) builder.ellipse = EllipseArgs.ADAPTER.redact(builder.ellipse); - builder.clearUnknownFields(); - return builder.build(); - } } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java index bc9120b5..76581e76 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java @@ -1,24 +1,21 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 13:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import java.util.List; + import okio.ByteString; -public final class SpriteEntity extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_SpriteEntity(); +public final class SpriteEntity extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(SpriteEntity.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -31,7 +28,8 @@ public final class SpriteEntity extends Message frames; @@ -50,7 +49,8 @@ public final class SpriteEntity extends Message frames, String matteKey) this(imageKey, frames, matteKey, ByteString.EMPTY); } - public SpriteEntity(String imageKey, List frames, String matteKey, ByteString unknownFields) { + public SpriteEntity(String imageKey, List frames, String matteKey, + ByteString unknownFields) { super(ADAPTER, unknownFields); this.imageKey = imageKey; this.frames = Internal.immutableCopyOf("frames", frames); @@ -69,7 +70,7 @@ public SpriteEntity(String imageKey, List frames, String matteKey, public Builder newBuilder() { Builder builder = new Builder(); builder.imageKey = imageKey; - builder.frames = Internal.copyOf("frames", frames); + builder.frames = Internal.copyOf(frames); builder.matteKey = matteKey; builder.addUnknownFields(unknownFields()); return builder; @@ -99,15 +100,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (imageKey != null) builder.append(", imageKey=").append(imageKey); - if (!frames.isEmpty()) builder.append(", frames=").append(frames); - if (matteKey != null) builder.append(", matteKey=").append(matteKey); - return builder.replace(0, 2, "SpriteEntity{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public String imageKey; @@ -149,54 +141,4 @@ public SpriteEntity build() { return new SpriteEntity(imageKey, frames, matteKey, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_SpriteEntity extends ProtoAdapter { - ProtoAdapter_SpriteEntity() { - super(FieldEncoding.LENGTH_DELIMITED, SpriteEntity.class); - } - - @Override - public int encodedSize(SpriteEntity value) { - return (value.imageKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(1, value.imageKey) : 0) - + FrameEntity.ADAPTER.asRepeated().encodedSizeWithTag(2, value.frames) - + (value.matteKey != null ? ProtoAdapter.STRING.encodedSizeWithTag(3, value.matteKey) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, SpriteEntity value) throws IOException { - if (value.imageKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 1, value.imageKey); - FrameEntity.ADAPTER.asRepeated().encodeWithTag(writer, 2, value.frames); - if (value.matteKey != null) ProtoAdapter.STRING.encodeWithTag(writer, 3, value.matteKey); - writer.writeBytes(value.unknownFields()); - } - - @Override - public SpriteEntity decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.imageKey(ProtoAdapter.STRING.decode(reader)); break; - case 2: builder.frames.add(FrameEntity.ADAPTER.decode(reader)); break; - case 3: builder.matteKey(ProtoAdapter.STRING.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public SpriteEntity redact(SpriteEntity value) { - Builder builder = value.newBuilder(); - Internal.redactElements(builder.frames, FrameEntity.ADAPTER); - builder.clearUnknownFields(); - return builder.build(); - } - } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java index c4c4941d..1a8ecd58 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java @@ -1,24 +1,19 @@ // Code generated by Wire protocol buffer compiler, do not edit. -// Source file: svga.proto at 34:1 +// Source file: svga.proto package com.opensource.svgaplayer.proto; -import com.squareup.wire.FieldEncoding; +import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; -import com.squareup.wire.ProtoReader; -import com.squareup.wire.ProtoWriter; import com.squareup.wire.WireField; import com.squareup.wire.internal.Internal; -import java.io.IOException; -import java.lang.Float; -import java.lang.Object; -import java.lang.Override; -import java.lang.String; -import java.lang.StringBuilder; + import okio.ByteString; -public final class Transform extends Message { - public static final ProtoAdapter ADAPTER = new ProtoAdapter_Transform(); +public final class Transform extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Transform.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -36,37 +31,43 @@ public final class Transform extends Message { @WireField( tag = 1, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float a; @WireField( tag = 2, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float b; @WireField( tag = 3, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float c; @WireField( tag = 4, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float d; @WireField( tag = 5, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float tx; @WireField( tag = 6, - adapter = "com.squareup.wire.ProtoAdapter#FLOAT" + adapter = "com.squareup.wire.ProtoAdapter#FLOAT", + returnDefaultValue = false ) public final Float ty; @@ -74,7 +75,8 @@ public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty) { this(a, b, c, d, tx, ty, ByteString.EMPTY); } - public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty, ByteString unknownFields) { + public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty, + ByteString unknownFields) { super(ADAPTER, unknownFields); this.a = a; this.b = b; @@ -127,18 +129,6 @@ public int hashCode() { return result; } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - if (a != null) builder.append(", a=").append(a); - if (b != null) builder.append(", b=").append(b); - if (c != null) builder.append(", c=").append(c); - if (d != null) builder.append(", d=").append(d); - if (tx != null) builder.append(", tx=").append(tx); - if (ty != null) builder.append(", ty=").append(ty); - return builder.replace(0, 2, "Transform{").append('}').toString(); - } - public static final class Builder extends Message.Builder { public Float a; @@ -190,62 +180,4 @@ public Transform build() { return new Transform(a, b, c, d, tx, ty, super.buildUnknownFields()); } } - - private static final class ProtoAdapter_Transform extends ProtoAdapter { - ProtoAdapter_Transform() { - super(FieldEncoding.LENGTH_DELIMITED, Transform.class); - } - - @Override - public int encodedSize(Transform value) { - return (value.a != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(1, value.a) : 0) - + (value.b != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(2, value.b) : 0) - + (value.c != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(3, value.c) : 0) - + (value.d != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(4, value.d) : 0) - + (value.tx != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(5, value.tx) : 0) - + (value.ty != null ? ProtoAdapter.FLOAT.encodedSizeWithTag(6, value.ty) : 0) - + value.unknownFields().size(); - } - - @Override - public void encode(ProtoWriter writer, Transform value) throws IOException { - if (value.a != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 1, value.a); - if (value.b != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 2, value.b); - if (value.c != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 3, value.c); - if (value.d != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 4, value.d); - if (value.tx != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 5, value.tx); - if (value.ty != null) ProtoAdapter.FLOAT.encodeWithTag(writer, 6, value.ty); - writer.writeBytes(value.unknownFields()); - } - - @Override - public Transform decode(ProtoReader reader) throws IOException { - Builder builder = new Builder(); - long token = reader.beginMessage(); - for (int tag; (tag = reader.nextTag()) != -1;) { - switch (tag) { - case 1: builder.a(ProtoAdapter.FLOAT.decode(reader)); break; - case 2: builder.b(ProtoAdapter.FLOAT.decode(reader)); break; - case 3: builder.c(ProtoAdapter.FLOAT.decode(reader)); break; - case 4: builder.d(ProtoAdapter.FLOAT.decode(reader)); break; - case 5: builder.tx(ProtoAdapter.FLOAT.decode(reader)); break; - case 6: builder.ty(ProtoAdapter.FLOAT.decode(reader)); break; - default: { - FieldEncoding fieldEncoding = reader.peekFieldEncoding(); - Object value = fieldEncoding.rawProtoAdapter().decode(reader); - builder.addUnknownField(tag, fieldEncoding, value); - } - } - } - reader.endMessage(token); - return builder.build(); - } - - @Override - public Transform redact(Transform value) { - Builder builder = value.newBuilder(); - builder.clearUnknownFields(); - return builder.build(); - } - } } From f44c7b2aca8966be4d514ba2ddb1d511590ed20b Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sun, 22 Dec 2019 23:29:25 +0800 Subject: [PATCH 02/19] compileOnly to Provided --- library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index 66d81bc4..b8eb24ab 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -30,7 +30,7 @@ android { dependencies { // api fileTree(include: ['*.jar'], dir: 'libs') - compileOnly fileTree(include: ['*.jar'], dir: 'libs') + provided fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.squareup.okio:okio:2.4.2' // implementation 'com.squareup.wire:wire-runtime:3.0.2' From 8c683ee46f548a7b238f89208a66c512750e72f1 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sun, 22 Dec 2019 23:35:25 +0800 Subject: [PATCH 03/19] provided to implementation --- library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index b8eb24ab..fdd9f8dd 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -30,7 +30,7 @@ android { dependencies { // api fileTree(include: ['*.jar'], dir: 'libs') - provided fileTree(include: ['*.jar'], dir: 'libs') + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.squareup.okio:okio:2.4.2' // implementation 'com.squareup.wire:wire-runtime:3.0.2' From b98c3657a88c25791333772896962a852c78fe19 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sun, 22 Dec 2019 23:43:45 +0800 Subject: [PATCH 04/19] add wire-runtime --- library/build.gradle | 2 +- .../libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar | Bin 0 -> 109613 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar diff --git a/library/build.gradle b/library/build.gradle index fdd9f8dd..66d81bc4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -30,7 +30,7 @@ android { dependencies { // api fileTree(include: ['*.jar'], dir: 'libs') - implementation fileTree(include: ['*.jar'], dir: 'libs') + compileOnly fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.squareup.okio:okio:2.4.2' // implementation 'com.squareup.wire:wire-runtime:3.0.2' diff --git a/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar b/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..37fec6b4ce2412a4d62cb9d803b784fb6d7107b7 GIT binary patch literal 109613 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 literal 0 HcmV?d00001 From 8eff63682afc8d67a7d5091d61ce84fc881feaf1 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sun, 22 Dec 2019 23:47:13 +0800 Subject: [PATCH 05/19] add test code --- app/src/main/assets/daxiao.svga | Bin 0 -> 18390 bytes app/src/main/assets/yingbi.svga | Bin 0 -> 99098 bytes .../AnimationFromAssetsActivity.java | 2 +- app/src/main/java/common/Biz.java | 182 ++++++++ app/src/main/java/common/BizAction.java | 183 ++++++++ app/src/main/java/common/EBizAction.java | 50 ++ app/src/main/java/common/EBizType.java | 43 ++ app/src/main/java/common/ERet.java | 352 ++++++++++++++ app/src/main/java/common/ESex.java | 43 ++ app/src/main/java/common/Header.java | 438 ++++++++++++++++++ app/src/main/java/common/Page.java | 173 +++++++ app/src/main/java/common/Response.java | 84 ++++ app/src/main/java/common/Result.java | 141 ++++++ app/src/main/java/common/YMicroRet.java | 82 ++++ app/src/main/java/ikxd/cproxy/CProxy.java | 242 ++++++++++ .../main/java/ikxd/cproxy/HeartbeatReq.java | 142 ++++++ .../main/java/ikxd/cproxy/HeartbeatRes.java | 115 +++++ app/src/main/java/ikxd/cproxy/Inner.java | 105 +++++ app/src/main/java/ikxd/cproxy/InnerV2.java | 130 ++++++ .../main/java/ikxd/cproxy/JoinRoomReq.java | 84 ++++ .../main/java/ikxd/cproxy/JoinRoomRes.java | 84 ++++ .../main/java/ikxd/cproxy/LeaveRoomReq.java | 84 ++++ .../main/java/ikxd/cproxy/LeaveRoomRes.java | 84 ++++ .../main/java/ikxd/cproxy/ProbeNotify.java | 90 ++++ .../main/java/ikxd/cproxy/ToastNotify.java | 110 +++++ app/src/main/java/ikxd/cproxy/Uri.java | 64 +++ app/src/main/java/ikxd/cproxy/WsCode.java | 68 +++ 27 files changed, 3174 insertions(+), 1 deletion(-) create mode 100644 app/src/main/assets/daxiao.svga create mode 100644 app/src/main/assets/yingbi.svga create mode 100644 app/src/main/java/common/Biz.java create mode 100644 app/src/main/java/common/BizAction.java create mode 100644 app/src/main/java/common/EBizAction.java create mode 100644 app/src/main/java/common/EBizType.java create mode 100644 app/src/main/java/common/ERet.java create mode 100644 app/src/main/java/common/ESex.java create mode 100644 app/src/main/java/common/Header.java create mode 100644 app/src/main/java/common/Page.java create mode 100644 app/src/main/java/common/Response.java create mode 100644 app/src/main/java/common/Result.java create mode 100644 app/src/main/java/common/YMicroRet.java create mode 100644 app/src/main/java/ikxd/cproxy/CProxy.java create mode 100644 app/src/main/java/ikxd/cproxy/HeartbeatReq.java create mode 100644 app/src/main/java/ikxd/cproxy/HeartbeatRes.java create mode 100644 app/src/main/java/ikxd/cproxy/Inner.java create mode 100644 app/src/main/java/ikxd/cproxy/InnerV2.java create mode 100644 app/src/main/java/ikxd/cproxy/JoinRoomReq.java create mode 100644 app/src/main/java/ikxd/cproxy/JoinRoomRes.java create mode 100644 app/src/main/java/ikxd/cproxy/LeaveRoomReq.java create mode 100644 app/src/main/java/ikxd/cproxy/LeaveRoomRes.java create mode 100644 app/src/main/java/ikxd/cproxy/ProbeNotify.java create mode 100644 app/src/main/java/ikxd/cproxy/ToastNotify.java create mode 100644 app/src/main/java/ikxd/cproxy/Uri.java create mode 100644 app/src/main/java/ikxd/cproxy/WsCode.java diff --git a/app/src/main/assets/daxiao.svga b/app/src/main/assets/daxiao.svga new file mode 100644 index 0000000000000000000000000000000000000000..2488f0e5e90430c74acd2ddd2ef3c2bdad652b36 GIT binary patch literal 18390 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%0DQ&O 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 af8u8W0Qm4PLlqAFe+u`Xa{Lz*N^hbso576$ literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java index b9ff95ba..c6ee4e6e 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java @@ -36,7 +36,7 @@ public void onClick(View view) { } private void loadAnimation() { - parser.decodeFromAssets(this.randomSample(), new SVGAParser.ParseCompletion() { + parser.decodeFromAssets("daxiao.svga", new SVGAParser.ParseCompletion() { @Override public void onComplete(@NotNull SVGAVideoEntity videoItem) { animationView.setVideoItem(videoItem); diff --git a/app/src/main/java/common/Biz.java b/app/src/main/java/common/Biz.java new file mode 100644 index 00000000..48f9cd16 --- /dev/null +++ b/app/src/main/java/common/Biz.java @@ -0,0 +1,182 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.List; +import java.util.Map; +import okio.ByteString; + +/** + * BIZ 对应的是Header.biz字段,用于给业务做一些透传信息 + * 使用方法: + * 服务器通过biz_actions告诉客户端更新biz信息,客户端将信息保存在内存里面 + * 客户端给服务端发包的时候,需要将对应的sname的biz信息填充在biz_infos字段里面 + */ +public final class Biz extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Biz.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + /** + * see EBizType + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64", + label = WireField.Label.REPEATED + ) + public final List types; + + /** + * 各列的编号和EBizType保持一致 + * 下行包携带,用于给服务端控制客户端的biz信息 + */ + @WireField( + tag = 10, + adapter = "common.BizAction#ADAPTER", + label = WireField.Label.REPEATED + ) + public final List biz_actions; + + /** + * 上行包携带,客户端携带这些信息给对应的sname + */ + @WireField( + tag = 11, + keyAdapter = "com.squareup.wire.ProtoAdapter#STRING", + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final Map biz_infos; + + /** + * 一些扩展的字段,上下行都有可能,由业务自行决定怎么用 + */ + @WireField( + tag = 12, + keyAdapter = "com.squareup.wire.ProtoAdapter#STRING", + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final Map biz_ext; + + public Biz(List types, List biz_actions, Map biz_infos, + Map biz_ext) { + this(types, biz_actions, biz_infos, biz_ext, ByteString.EMPTY); + } + + public Biz(List types, List biz_actions, Map biz_infos, + Map biz_ext, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.types = Internal.immutableCopyOf("types", types); + this.biz_actions = Internal.immutableCopyOf("biz_actions", biz_actions); + this.biz_infos = Internal.immutableCopyOf("biz_infos", biz_infos); + this.biz_ext = Internal.immutableCopyOf("biz_ext", biz_ext); + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.types = Internal.copyOf(types); + builder.biz_actions = Internal.copyOf(biz_actions); + builder.biz_infos = Internal.copyOf(biz_infos); + builder.biz_ext = Internal.copyOf(biz_ext); + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Biz)) return false; + Biz o = (Biz) other; + return unknownFields().equals(o.unknownFields()) + && types.equals(o.types) + && biz_actions.equals(o.biz_actions) + && biz_infos.equals(o.biz_infos) + && biz_ext.equals(o.biz_ext); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + types.hashCode(); + result = result * 37 + biz_actions.hashCode(); + result = result * 37 + biz_infos.hashCode(); + result = result * 37 + biz_ext.hashCode(); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public List types; + + public List biz_actions; + + public Map biz_infos; + + public Map biz_ext; + + public Builder() { + types = Internal.newMutableList(); + biz_actions = Internal.newMutableList(); + biz_infos = Internal.newMutableMap(); + biz_ext = Internal.newMutableMap(); + } + + /** + * see EBizType + */ + public Builder types(List types) { + Internal.checkElementsNotNull(types); + this.types = types; + return this; + } + + /** + * 各列的编号和EBizType保持一致 + * 下行包携带,用于给服务端控制客户端的biz信息 + */ + public Builder biz_actions(List biz_actions) { + Internal.checkElementsNotNull(biz_actions); + this.biz_actions = biz_actions; + return this; + } + + /** + * 上行包携带,客户端携带这些信息给对应的sname + */ + public Builder biz_infos(Map biz_infos) { + Internal.checkElementsNotNull(biz_infos); + this.biz_infos = biz_infos; + return this; + } + + /** + * 一些扩展的字段,上下行都有可能,由业务自行决定怎么用 + */ + public Builder biz_ext(Map biz_ext) { + Internal.checkElementsNotNull(biz_ext); + this.biz_ext = biz_ext; + return this; + } + + @Override + public Biz build() { + return new Biz(types, biz_actions, biz_infos, biz_ext, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/common/BizAction.java b/app/src/main/java/common/BizAction.java new file mode 100644 index 00000000..fc87185a --- /dev/null +++ b/app/src/main/java/common/BizAction.java @@ -0,0 +1,183 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +/** + * 变更信息 + */ +public final class BizAction extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(BizAction.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Long DEFAULT_ACTION = 0L; + + public static final String DEFAULT_SNAME = ""; + + public static final String DEFAULT_KEY = ""; + + public static final ByteString DEFAULT_VALUE = ByteString.EMPTY; + + public static final Long DEFAULT_VALID_TIME = 0L; + + /** + * see EBizAction + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long action; + + /** + * Header.sname + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String sname; + + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String key; + + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final ByteString value; + + /** + * 有效期,秒,相对时间,比如5表示5s后失效。如果没设置或者<=0表示永久有效 + */ + @WireField( + tag = 5, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long valid_time; + + public BizAction(Long action, String sname, String key, ByteString value, Long valid_time) { + this(action, sname, key, value, valid_time, ByteString.EMPTY); + } + + public BizAction(Long action, String sname, String key, ByteString value, Long valid_time, + ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.action = action; + this.sname = sname; + this.key = key; + this.value = value; + this.valid_time = valid_time; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.action = action; + builder.sname = sname; + builder.key = key; + builder.value = value; + builder.valid_time = valid_time; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof BizAction)) return false; + BizAction o = (BizAction) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(action, o.action) + && Internal.equals(sname, o.sname) + && Internal.equals(key, o.key) + && Internal.equals(value, o.value) + && Internal.equals(valid_time, o.valid_time); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (action != null ? action.hashCode() : 0); + result = result * 37 + (sname != null ? sname.hashCode() : 0); + result = result * 37 + (key != null ? key.hashCode() : 0); + result = result * 37 + (value != null ? value.hashCode() : 0); + result = result * 37 + (valid_time != null ? valid_time.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Long action; + + public String sname; + + public String key; + + public ByteString value; + + public Long valid_time; + + public Builder() { + } + + /** + * see EBizAction + */ + public Builder action(Long action) { + this.action = action; + return this; + } + + /** + * Header.sname + */ + public Builder sname(String sname) { + this.sname = sname; + return this; + } + + public Builder key(String key) { + this.key = key; + return this; + } + + public Builder value(ByteString value) { + this.value = value; + return this; + } + + /** + * 有效期,秒,相对时间,比如5表示5s后失效。如果没设置或者<=0表示永久有效 + */ + public Builder valid_time(Long valid_time) { + this.valid_time = valid_time; + return this; + } + + @Override + public BizAction build() { + return new BizAction(action, sname, key, value, valid_time, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/common/EBizAction.java b/app/src/main/java/common/EBizAction.java new file mode 100644 index 00000000..da40fcf6 --- /dev/null +++ b/app/src/main/java/common/EBizAction.java @@ -0,0 +1,50 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +/** + * ///////////////////////BIZ////////////////////////////////// + * 用于控制变更行为 + */ +public enum EBizAction implements WireEnum { + BizActionNone(0), + + /** + * 添加、修改(也就是覆盖) + */ + BizActionAdd(1), + + /** + * 删除 + */ + BizActionDel(2); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(EBizAction.class); + + private final int value; + + EBizAction(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static EBizAction fromValue(int value) { + switch (value) { + case 0: return BizActionNone; + case 1: return BizActionAdd; + case 2: return BizActionDel; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/common/EBizType.java b/app/src/main/java/common/EBizType.java new file mode 100644 index 00000000..521a94df --- /dev/null +++ b/app/src/main/java/common/EBizType.java @@ -0,0 +1,43 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +public enum EBizType implements WireEnum { + EBizTypeNone(0), + + EBizTypeAction(10), + + EBizTypeInfos(11), + + EBizTypeExt(12); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(EBizType.class); + + private final int value; + + EBizType(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static EBizType fromValue(int value) { + switch (value) { + case 0: return EBizTypeNone; + case 10: return EBizTypeAction; + case 11: return EBizTypeInfos; + case 12: return EBizTypeExt; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/common/ERet.java b/app/src/main/java/common/ERet.java new file mode 100644 index 00000000..b51047b9 --- /dev/null +++ b/app/src/main/java/common/ERet.java @@ -0,0 +1,352 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +/** + * 系统保留错误码 0-999 + */ +public enum ERet implements WireEnum { + kRetSuccess(0), + + /** + * 参数错误 + */ + kRetErrParameter(1), + + /** + * cookie错误 + */ + kRetErrCookie(2), + + /** + * 未授权 + */ + kRetErrUnauthorized(3), + + /** + * 服务器不支持的uri + */ + kRetErrUnknowUri(4), + + /** + * 不再支持该版本 + */ + kRetErrVersion(5), + + /** + * 账号被封禁 + */ + kRetErrBanned(6), + + /** + * 服务器忙 + */ + kRetErrBusy(7), + + /** + * Some requested entity (e.g., file or directory) was not found. + * HTTP Mapping: 404 Not Found + */ + kRetErrNotFound(8), + + /** + * The entity that a client attempted to create (e.g., file or directory) + * already exists. + * + * HTTP Mapping: 409 Conflict + */ + kRetErrAlreadyExists(9), + + /** + * The caller does not have permission to execute the specified + * operation. `PERMISSION_DENIED` must not be used for rejections + * caused by exhausting some resource (use `RESOURCE_EXHAUSTED` + * instead for those errors). `PERMISSION_DENIED` must not be + * used if the caller can not be identified (use `UNAUTHENTICATED` + * instead for those errors). This error code does not imply the + * request is valid or the requested entity exists or satisfies + * other pre-conditions. + * + * HTTP Mapping: 403 Forbidden + */ + kRetErrPermissionDenied(10), + + /** + * 版本不兼容,操作无法完成 + */ + kRetErrIncompatibleVersion(11), + + /** + * 系统错误,尽量少用这个 + */ + kRetErrSystem(999), + + /** + * 游戏不存在,可能已经下架 + */ + kRetErrGameIdNotExist(1001), + + /** + * im pk重复邀请 + */ + kRetErrImPkRepeatedInvite(1002), + + /** + * im pk邀请过期 + */ + kRetErrImPkInviteOutOfDate(1003), + + /** + * 创建pk URl失败 + */ + kRetErrGenPkGameUrlFailed(1004), + + /** + * s2s AddrlistFriends接口失败 + */ + kRetErrS2SAddrlistFriendsFailed(1005), + + /** + * s2s FbFriends接口失败 + */ + kRetErrS2SFbFriendsFailed(1006), + + /** + * s2s GetFriendList接口失败 + */ + kRetErrS2SGetFriendListFailed(1007), + + /** + * s2s GetUserStatus接口失败 + */ + kRetErrS2SGetUserStatusFailed(1008), + + /** + * s2s GetUsersInfo接口失败 + */ + kRetErrS2SGetUsersInfoFailed(1009), + + /** + * 游戏维护中 + */ + kRetErrGameMaintain(1010), + + /** + * 游戏标满 + */ + kRetErrGameFull(1011), + + /** + * im pk邀请已被接受 + */ + kRetErrImPkInviteAccepted(1012), + + /** + * 场次无效 + */ + kRetErrIdInvalid(1013), + + /** + * 能量不足 + */ + kRetErrPowerLow(1014), + + /** + * 钱不足 + */ + kRetErrMoneyLow(1015), + + /** + * source错误 + */ + kRetErrSource(1016), + + /** + * 达到每天上限1000人 + */ + kRetErrRecommendDailyLimit(1051), + + /** + * 附近找不到人 + */ + kRetErrRecommendNearbyNone(1052), + + /** + * 2000 - 2100 组队游戏专用 + * 组队人数已满 + */ + kRetErrTeamFull(2000), + + /** + * 组队已失效 + */ + kRetErrTeamInvalid(2001), + + /** + * 游戏已开始 + */ + kRetErrGameHasBegun(2002), + + /** + * 用户游戏状态为游戏中,不能创建或加入新队伍 + */ + kRetErrGameing(2003), + + /** + * 邀请者已离开房间 + */ + kRetErrInviteLeaved(2004), + + /** + * 用户在团队中,不能重新创建团队 + */ + KRetErrBelongTeam(2005), + + /** + * 获取游戏信息失败 + */ + kRetErrGetGameInfoErr(2006), + + /** + * 不在匹配中 + */ + kRetErrNoInMatch(2007), + + /** + * 取消匹配失败 + */ + kRetErrCancelMatchErr(2008), + + /** + * 用户不在指定房间 + */ + kRetErrUserNotInRoom(2009), + + /** + * 团队匹配中 + */ + kRetErrTeamMatching(2010), + + /** + * 对方已接受你发起的im创建团队邀请,暂时不能再接受其它组队邀请 + */ + kRetErrImTeamCreating(2011), + + /** + * 部分用户不支持切换组队模板 + */ + kRetErrChangeTemplate(2012), + + /** + * 2101 - 2200 语音呼叫协议专用 + * 自己正在忙碌中,例如正在游戏中(现在不支持),正在通话中 + */ + kRetErrVoiceChatSelfBusy(2101), + + /** + * 对方正在忙碌中,例如正在游戏中(现在不支持),正在通话中 + */ + kRetErrVoiceChatOtherBusy(2102), + + /** + * 呼叫超时 + */ + kRetErrVoiceChatCallTimeout(2103), + + /** + * 不是被呼叫的用户 + */ + kRetErrVoiceChatUserNotBeCall(2104), + + /** + * 聊天已经开始(取消失败的情况下) + */ + kRetErrVoiceChatHadStarted(2105), + + /** + * 通话已结束 + */ + kRetErrVoiceChatHadStop(2106), + + /** + * 对方不在线 + */ + kRetErrVoiceChatOffLine(2107); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(ERet.class); + + private final int value; + + ERet(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static ERet fromValue(int value) { + switch (value) { + case 0: return kRetSuccess; + case 1: return kRetErrParameter; + case 2: return kRetErrCookie; + case 3: return kRetErrUnauthorized; + case 4: return kRetErrUnknowUri; + case 5: return kRetErrVersion; + case 6: return kRetErrBanned; + case 7: return kRetErrBusy; + case 8: return kRetErrNotFound; + case 9: return kRetErrAlreadyExists; + case 10: return kRetErrPermissionDenied; + case 11: return kRetErrIncompatibleVersion; + case 999: return kRetErrSystem; + case 1001: return kRetErrGameIdNotExist; + case 1002: return kRetErrImPkRepeatedInvite; + case 1003: return kRetErrImPkInviteOutOfDate; + case 1004: return kRetErrGenPkGameUrlFailed; + case 1005: return kRetErrS2SAddrlistFriendsFailed; + case 1006: return kRetErrS2SFbFriendsFailed; + case 1007: return kRetErrS2SGetFriendListFailed; + case 1008: return kRetErrS2SGetUserStatusFailed; + case 1009: return kRetErrS2SGetUsersInfoFailed; + case 1010: return kRetErrGameMaintain; + case 1011: return kRetErrGameFull; + case 1012: return kRetErrImPkInviteAccepted; + case 1013: return kRetErrIdInvalid; + case 1014: return kRetErrPowerLow; + case 1015: return kRetErrMoneyLow; + case 1016: return kRetErrSource; + case 1051: return kRetErrRecommendDailyLimit; + case 1052: return kRetErrRecommendNearbyNone; + case 2000: return kRetErrTeamFull; + case 2001: return kRetErrTeamInvalid; + case 2002: return kRetErrGameHasBegun; + case 2003: return kRetErrGameing; + case 2004: return kRetErrInviteLeaved; + case 2005: return KRetErrBelongTeam; + case 2006: return kRetErrGetGameInfoErr; + case 2007: return kRetErrNoInMatch; + case 2008: return kRetErrCancelMatchErr; + case 2009: return kRetErrUserNotInRoom; + case 2010: return kRetErrTeamMatching; + case 2011: return kRetErrImTeamCreating; + case 2012: return kRetErrChangeTemplate; + case 2101: return kRetErrVoiceChatSelfBusy; + case 2102: return kRetErrVoiceChatOtherBusy; + case 2103: return kRetErrVoiceChatCallTimeout; + case 2104: return kRetErrVoiceChatUserNotBeCall; + case 2105: return kRetErrVoiceChatHadStarted; + case 2106: return kRetErrVoiceChatHadStop; + case 2107: return kRetErrVoiceChatOffLine; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/common/ESex.java b/app/src/main/java/common/ESex.java new file mode 100644 index 00000000..8d16983e --- /dev/null +++ b/app/src/main/java/common/ESex.java @@ -0,0 +1,43 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +public enum ESex implements WireEnum { + kSexFemale(0), + + kSexMale(1), + + /** + * 用于性别过滤场景 + */ + kSexAll(2); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(ESex.class); + + private final int value; + + ESex(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static ESex fromValue(int value) { + switch (value) { + case 0: return kSexFemale; + case 1: return kSexMale; + case 2: return kSexAll; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/common/Header.java b/app/src/main/java/common/Header.java new file mode 100644 index 00000000..7954e4b0 --- /dev/null +++ b/app/src/main/java/common/Header.java @@ -0,0 +1,438 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Boolean; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import java.util.Map; +import okio.ByteString; + +public final class Header extends AndroidMessage { + public static final ProtoAdapter
ADAPTER = ProtoAdapter.newMessageAdapter(Header.class); + + public static final Creator
CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_SNAME = ""; + + public static final Long DEFAULT_SEQID = 0L; + + public static final Long DEFAULT_CODE = 0L; + + public static final String DEFAULT_LANG = ""; + + public static final String DEFAULT_TID = ""; + + public static final String DEFAULT_ROOMID = ""; + + public static final String DEFAULT_METHOD = ""; + + public static final String DEFAULT_VERSION = ""; + + public static final MSGTYPE DEFAULT_MSGTYPE = MSGTYPE.MSGTYPE_UNKNOWN; + + public static final Boolean DEFAULT_BACK_GROUND = false; + + public static final ByteString DEFAULT_BIZ = ByteString.EMPTY; + + public static final ByteString DEFAULT_ROUTING_KEY = ByteString.EMPTY; + + /** + * service name + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String sname; + + /** + * sequence id + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long seqid; + + /** + * return code + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long code; + + /** + * 语言代码_国家代码,如:zh_CN,en_US + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String lang; + + /** + * traceid 客户端不用填,只需要收到包的时候log出来 + */ + @WireField( + tag = 5, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String tid; + + @WireField( + tag = 6, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String roomid; + + /** + * rpc调用时使用的函数名称 + */ + @WireField( + tag = 7, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String method; + + /** + * 版本信息, 客户端现在用这个字段来区分新老消息,老版本消息禁止填写 + */ + @WireField( + tag = 8, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String version; + + /** + * 消息类型 + */ + @WireField( + tag = 9, + adapter = "common.Header$MSGTYPE#ADAPTER" + ) + public final MSGTYPE msgtype; + + /** + * 是否处于后台,true表示处于后台,false表示处于前台。MSGTYPE_REQ类型消息才需要 + */ + @WireField( + tag = 10, + adapter = "com.squareup.wire.ProtoAdapter#BOOL" + ) + public final Boolean back_ground; + + /** + * 业务透传字段。 + */ + @WireField( + tag = 11, + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final ByteString biz; + + /** + * 扩展字段 + */ + @WireField( + tag = 12, + keyAdapter = "com.squareup.wire.ProtoAdapter#STRING", + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final Map extend; + + /** + * 路由信息 + */ + @WireField( + tag = 13, + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final ByteString routing_key; + + public Header(String sname, Long seqid, Long code, String lang, String tid, String roomid, + String method, String version, MSGTYPE msgtype, Boolean back_ground, ByteString biz, + Map extend, ByteString routing_key) { + this(sname, seqid, code, lang, tid, roomid, method, version, msgtype, back_ground, biz, extend, routing_key, ByteString.EMPTY); + } + + public Header(String sname, Long seqid, Long code, String lang, String tid, String roomid, + String method, String version, MSGTYPE msgtype, Boolean back_ground, ByteString biz, + Map extend, ByteString routing_key, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.sname = sname; + this.seqid = seqid; + this.code = code; + this.lang = lang; + this.tid = tid; + this.roomid = roomid; + this.method = method; + this.version = version; + this.msgtype = msgtype; + this.back_ground = back_ground; + this.biz = biz; + this.extend = Internal.immutableCopyOf("extend", extend); + this.routing_key = routing_key; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.sname = sname; + builder.seqid = seqid; + builder.code = code; + builder.lang = lang; + builder.tid = tid; + builder.roomid = roomid; + builder.method = method; + builder.version = version; + builder.msgtype = msgtype; + builder.back_ground = back_ground; + builder.biz = biz; + builder.extend = Internal.copyOf(extend); + builder.routing_key = routing_key; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Header)) return false; + Header o = (Header) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(sname, o.sname) + && Internal.equals(seqid, o.seqid) + && Internal.equals(code, o.code) + && Internal.equals(lang, o.lang) + && Internal.equals(tid, o.tid) + && Internal.equals(roomid, o.roomid) + && Internal.equals(method, o.method) + && Internal.equals(version, o.version) + && Internal.equals(msgtype, o.msgtype) + && Internal.equals(back_ground, o.back_ground) + && Internal.equals(biz, o.biz) + && extend.equals(o.extend) + && Internal.equals(routing_key, o.routing_key); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (sname != null ? sname.hashCode() : 0); + result = result * 37 + (seqid != null ? seqid.hashCode() : 0); + result = result * 37 + (code != null ? code.hashCode() : 0); + result = result * 37 + (lang != null ? lang.hashCode() : 0); + result = result * 37 + (tid != null ? tid.hashCode() : 0); + result = result * 37 + (roomid != null ? roomid.hashCode() : 0); + result = result * 37 + (method != null ? method.hashCode() : 0); + result = result * 37 + (version != null ? version.hashCode() : 0); + result = result * 37 + (msgtype != null ? msgtype.hashCode() : 0); + result = result * 37 + (back_ground != null ? back_ground.hashCode() : 0); + result = result * 37 + (biz != null ? biz.hashCode() : 0); + result = result * 37 + extend.hashCode(); + result = result * 37 + (routing_key != null ? routing_key.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String sname; + + public Long seqid; + + public Long code; + + public String lang; + + public String tid; + + public String roomid; + + public String method; + + public String version; + + public MSGTYPE msgtype; + + public Boolean back_ground; + + public ByteString biz; + + public Map extend; + + public ByteString routing_key; + + public Builder() { + extend = Internal.newMutableMap(); + } + + /** + * service name + */ + public Builder sname(String sname) { + this.sname = sname; + return this; + } + + /** + * sequence id + */ + public Builder seqid(Long seqid) { + this.seqid = seqid; + return this; + } + + /** + * return code + */ + public Builder code(Long code) { + this.code = code; + return this; + } + + /** + * 语言代码_国家代码,如:zh_CN,en_US + */ + public Builder lang(String lang) { + this.lang = lang; + return this; + } + + /** + * traceid 客户端不用填,只需要收到包的时候log出来 + */ + public Builder tid(String tid) { + this.tid = tid; + return this; + } + + public Builder roomid(String roomid) { + this.roomid = roomid; + return this; + } + + /** + * rpc调用时使用的函数名称 + */ + public Builder method(String method) { + this.method = method; + return this; + } + + /** + * 版本信息, 客户端现在用这个字段来区分新老消息,老版本消息禁止填写 + */ + public Builder version(String version) { + this.version = version; + return this; + } + + /** + * 消息类型 + */ + public Builder msgtype(MSGTYPE msgtype) { + this.msgtype = msgtype; + return this; + } + + /** + * 是否处于后台,true表示处于后台,false表示处于前台。MSGTYPE_REQ类型消息才需要 + */ + public Builder back_ground(Boolean back_ground) { + this.back_ground = back_ground; + return this; + } + + /** + * 业务透传字段。 + */ + public Builder biz(ByteString biz) { + this.biz = biz; + return this; + } + + /** + * 扩展字段 + */ + public Builder extend(Map extend) { + Internal.checkElementsNotNull(extend); + this.extend = extend; + return this; + } + + /** + * 路由信息 + */ + public Builder routing_key(ByteString routing_key) { + this.routing_key = routing_key; + return this; + } + + @Override + public Header build() { + return new Header(sname, seqid, code, lang, tid, roomid, method, version, msgtype, back_ground, biz, extend, routing_key, super.buildUnknownFields()); + } + } + + public enum MSGTYPE implements WireEnum { + MSGTYPE_UNKNOWN(0), + + /** + * 请求消息 + */ + MSGTYPE_REQ(1), + + /** + * 响应消息 + */ + MSGTYPE_RESP(2), + + /** + * 单播消息 + */ + MSGTYPE_NOTICE(3); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(MSGTYPE.class); + + private final int value; + + MSGTYPE(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static MSGTYPE fromValue(int value) { + switch (value) { + case 0: return MSGTYPE_UNKNOWN; + case 1: return MSGTYPE_REQ; + case 2: return MSGTYPE_RESP; + case 3: return MSGTYPE_NOTICE; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } + } +} diff --git a/app/src/main/java/common/Page.java b/app/src/main/java/common/Page.java new file mode 100644 index 00000000..29d2250a --- /dev/null +++ b/app/src/main/java/common/Page.java @@ -0,0 +1,173 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +/** + * ///////////////////////BIZ////////////////////////////////// + * ///////////////////////PAGE////////////////////////////////// + * 统一的分页结构体 + * 客户端请求带上:snap(第一次为0), offset 和 limit + * 服务器返回: snap, offset(==0,偏移从0开始), limit, total + * 全量列表: offset<0, limit <0 + */ +public final class Page extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Page.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Long DEFAULT_SNAP = 0L; + + public static final Long DEFAULT_OFFSET = 0L; + + public static final Long DEFAULT_LIMIT = 0L; + + public static final Long DEFAULT_TOTAL = 0L; + + /** + * 快照版本号 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long snap; + + /** + * 偏移 (<0:全量) + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long offset; + + /** + * 长度限制(<0:全量) + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long limit; + + /** + * 总长度 + */ + @WireField( + tag = 4, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long total; + + public Page(Long snap, Long offset, Long limit, Long total) { + this(snap, offset, limit, total, ByteString.EMPTY); + } + + public Page(Long snap, Long offset, Long limit, Long total, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.snap = snap; + this.offset = offset; + this.limit = limit; + this.total = total; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.snap = snap; + builder.offset = offset; + builder.limit = limit; + builder.total = total; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Page)) return false; + Page o = (Page) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(snap, o.snap) + && Internal.equals(offset, o.offset) + && Internal.equals(limit, o.limit) + && Internal.equals(total, o.total); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (snap != null ? snap.hashCode() : 0); + result = result * 37 + (offset != null ? offset.hashCode() : 0); + result = result * 37 + (limit != null ? limit.hashCode() : 0); + result = result * 37 + (total != null ? total.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Long snap; + + public Long offset; + + public Long limit; + + public Long total; + + public Builder() { + } + + /** + * 快照版本号 + */ + public Builder snap(Long snap) { + this.snap = snap; + return this; + } + + /** + * 偏移 (<0:全量) + */ + public Builder offset(Long offset) { + this.offset = offset; + return this; + } + + /** + * 长度限制(<0:全量) + */ + public Builder limit(Long limit) { + this.limit = limit; + return this; + } + + /** + * 总长度 + */ + public Builder total(Long total) { + this.total = total; + return this; + } + + @Override + public Page build() { + return new Page(snap, offset, limit, total, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/common/Response.java b/app/src/main/java/common/Response.java new file mode 100644 index 00000000..4aa3cf7e --- /dev/null +++ b/app/src/main/java/common/Response.java @@ -0,0 +1,84 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +/** + * 用一个很通用的名称表征通用response结构 + */ +public final class Response extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Response.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + @WireField( + tag = 1, + adapter = "common.Result#ADAPTER" + ) + public final Result result; + + public Response(Result result) { + this(result, ByteString.EMPTY); + } + + public Response(Result result, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.result = result; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.result = result; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Response)) return false; + Response o = (Response) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(result, o.result); + } + + @Override + public int hashCode() { + int result_ = super.hashCode; + if (result_ == 0) { + result_ = unknownFields().hashCode(); + result_ = result_ * 37 + (result != null ? result.hashCode() : 0); + super.hashCode = result_; + } + return result_; + } + + public static final class Builder extends Message.Builder { + public Result result; + + public Builder() { + } + + public Builder result(Result result) { + this.result = result; + return this; + } + + @Override + public Response build() { + return new Response(result, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/common/Result.java b/app/src/main/java/common/Result.java new file mode 100644 index 00000000..8bfa7bdf --- /dev/null +++ b/app/src/main/java/common/Result.java @@ -0,0 +1,141 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class Result extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Result.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Long DEFAULT_ERRCODE = 0L; + + public static final String DEFAULT_ERRMSG = ""; + + public static final Long DEFAULT_MAGIC = 0L; + + /** + * 每个协议自己定义, 0-999是系统保留 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long errcode; + + /** + * 错误信息,可以被用来展示(包含了i18n的功能) + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String errmsg; + + /** + * 兼容处理: 0x4861676f + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long magic; + + public Result(Long errcode, String errmsg, Long magic) { + this(errcode, errmsg, magic, ByteString.EMPTY); + } + + public Result(Long errcode, String errmsg, Long magic, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.errcode = errcode; + this.errmsg = errmsg; + this.magic = magic; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.errcode = errcode; + builder.errmsg = errmsg; + builder.magic = magic; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Result)) return false; + Result o = (Result) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(errcode, o.errcode) + && Internal.equals(errmsg, o.errmsg) + && Internal.equals(magic, o.magic); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (errcode != null ? errcode.hashCode() : 0); + result = result * 37 + (errmsg != null ? errmsg.hashCode() : 0); + result = result * 37 + (magic != null ? magic.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Long errcode; + + public String errmsg; + + public Long magic; + + public Builder() { + } + + /** + * 每个协议自己定义, 0-999是系统保留 + */ + public Builder errcode(Long errcode) { + this.errcode = errcode; + return this; + } + + /** + * 错误信息,可以被用来展示(包含了i18n的功能) + */ + public Builder errmsg(String errmsg) { + this.errmsg = errmsg; + return this; + } + + /** + * 兼容处理: 0x4861676f + */ + public Builder magic(Long magic) { + this.magic = magic; + return this; + } + + @Override + public Result build() { + return new Result(errcode, errmsg, magic, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/common/YMicroRet.java b/app/src/main/java/common/YMicroRet.java new file mode 100644 index 00000000..1282e0ce --- /dev/null +++ b/app/src/main/java/common/YMicroRet.java @@ -0,0 +1,82 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: common.proto +package common; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +/** + * YMicro框架层返回码 + */ +public enum YMicroRet implements WireEnum { + /** + * 成功 + */ + YMicroRetSuccess(0), + + /** + * 请求非法 + */ + YMicroRetBadRequest(400), + + /** + * 请求未鉴权 + */ + YMicroRetUnauthorized(401), + + /** + * 请求被禁止 + */ + YMicroRetForbidden(403), + + /** + * 请求后端服务未找到 + */ + YMicroRetNotFound(404), + + /** + * 请求后端方法被禁止 + */ + YMicroRetMethodNotAllowed(405), + + /** + * 请求冲突 + */ + YMicroRetConflict(409), + + /** + * 内部服务错误 + */ + YMicroRetInternalServerError(500); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(YMicroRet.class); + + private final int value; + + YMicroRet(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static YMicroRet fromValue(int value) { + switch (value) { + case 0: return YMicroRetSuccess; + case 400: return YMicroRetBadRequest; + case 401: return YMicroRetUnauthorized; + case 403: return YMicroRetForbidden; + case 404: return YMicroRetNotFound; + case 405: return YMicroRetMethodNotAllowed; + case 409: return YMicroRetConflict; + case 500: return YMicroRetInternalServerError; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/ikxd/cproxy/CProxy.java b/app/src/main/java/ikxd/cproxy/CProxy.java new file mode 100644 index 00000000..cd661213 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/CProxy.java @@ -0,0 +1,242 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import common.Header; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +public final class CProxy extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(CProxy.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Uri DEFAULT_URI = Uri.kUriNone; + + @WireField( + tag = 1, + adapter = "common.Header#ADAPTER" + ) + public final Header header; + + @WireField( + tag = 2, + adapter = "ikxd.cproxy.Uri#ADAPTER" + ) + public final Uri uri; + + @WireField( + tag = 11, + adapter = "ikxd.cproxy.ToastNotify#ADAPTER" + ) + public final ToastNotify toast_notify; + + @WireField( + tag = 12, + adapter = "ikxd.cproxy.JoinRoomReq#ADAPTER" + ) + public final JoinRoomReq join_room_req; + + @WireField( + tag = 13, + adapter = "ikxd.cproxy.JoinRoomRes#ADAPTER" + ) + public final JoinRoomRes join_room_res; + + @WireField( + tag = 14, + adapter = "ikxd.cproxy.LeaveRoomReq#ADAPTER" + ) + public final LeaveRoomReq leave_room_req; + + @WireField( + tag = 15, + adapter = "ikxd.cproxy.LeaveRoomRes#ADAPTER" + ) + public final LeaveRoomRes leave_room_res; + + @WireField( + tag = 16, + adapter = "ikxd.cproxy.HeartbeatReq#ADAPTER" + ) + public final HeartbeatReq heartbeat_req; + + @WireField( + tag = 17, + adapter = "ikxd.cproxy.HeartbeatRes#ADAPTER" + ) + public final HeartbeatRes heartbeat_res; + + @WireField( + tag = 18, + adapter = "ikxd.cproxy.ProbeNotify#ADAPTER" + ) + public final ProbeNotify probe_notify; + + public CProxy(Header header, Uri uri, ToastNotify toast_notify, JoinRoomReq join_room_req, + JoinRoomRes join_room_res, LeaveRoomReq leave_room_req, LeaveRoomRes leave_room_res, + HeartbeatReq heartbeat_req, HeartbeatRes heartbeat_res, ProbeNotify probe_notify) { + this(header, uri, toast_notify, join_room_req, join_room_res, leave_room_req, leave_room_res, heartbeat_req, heartbeat_res, probe_notify, ByteString.EMPTY); + } + + public CProxy(Header header, Uri uri, ToastNotify toast_notify, JoinRoomReq join_room_req, + JoinRoomRes join_room_res, LeaveRoomReq leave_room_req, LeaveRoomRes leave_room_res, + HeartbeatReq heartbeat_req, HeartbeatRes heartbeat_res, ProbeNotify probe_notify, + ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.header = header; + this.uri = uri; + this.toast_notify = toast_notify; + this.join_room_req = join_room_req; + this.join_room_res = join_room_res; + this.leave_room_req = leave_room_req; + this.leave_room_res = leave_room_res; + this.heartbeat_req = heartbeat_req; + this.heartbeat_res = heartbeat_res; + this.probe_notify = probe_notify; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.header = header; + builder.uri = uri; + builder.toast_notify = toast_notify; + builder.join_room_req = join_room_req; + builder.join_room_res = join_room_res; + builder.leave_room_req = leave_room_req; + builder.leave_room_res = leave_room_res; + builder.heartbeat_req = heartbeat_req; + builder.heartbeat_res = heartbeat_res; + builder.probe_notify = probe_notify; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof CProxy)) return false; + CProxy o = (CProxy) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(header, o.header) + && Internal.equals(uri, o.uri) + && Internal.equals(toast_notify, o.toast_notify) + && Internal.equals(join_room_req, o.join_room_req) + && Internal.equals(join_room_res, o.join_room_res) + && Internal.equals(leave_room_req, o.leave_room_req) + && Internal.equals(leave_room_res, o.leave_room_res) + && Internal.equals(heartbeat_req, o.heartbeat_req) + && Internal.equals(heartbeat_res, o.heartbeat_res) + && Internal.equals(probe_notify, o.probe_notify); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (header != null ? header.hashCode() : 0); + result = result * 37 + (uri != null ? uri.hashCode() : 0); + result = result * 37 + (toast_notify != null ? toast_notify.hashCode() : 0); + result = result * 37 + (join_room_req != null ? join_room_req.hashCode() : 0); + result = result * 37 + (join_room_res != null ? join_room_res.hashCode() : 0); + result = result * 37 + (leave_room_req != null ? leave_room_req.hashCode() : 0); + result = result * 37 + (leave_room_res != null ? leave_room_res.hashCode() : 0); + result = result * 37 + (heartbeat_req != null ? heartbeat_req.hashCode() : 0); + result = result * 37 + (heartbeat_res != null ? heartbeat_res.hashCode() : 0); + result = result * 37 + (probe_notify != null ? probe_notify.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Header header; + + public Uri uri; + + public ToastNotify toast_notify; + + public JoinRoomReq join_room_req; + + public JoinRoomRes join_room_res; + + public LeaveRoomReq leave_room_req; + + public LeaveRoomRes leave_room_res; + + public HeartbeatReq heartbeat_req; + + public HeartbeatRes heartbeat_res; + + public ProbeNotify probe_notify; + + public Builder() { + } + + public Builder header(Header header) { + this.header = header; + return this; + } + + public Builder uri(Uri uri) { + this.uri = uri; + return this; + } + + public Builder toast_notify(ToastNotify toast_notify) { + this.toast_notify = toast_notify; + return this; + } + + public Builder join_room_req(JoinRoomReq join_room_req) { + this.join_room_req = join_room_req; + return this; + } + + public Builder join_room_res(JoinRoomRes join_room_res) { + this.join_room_res = join_room_res; + return this; + } + + public Builder leave_room_req(LeaveRoomReq leave_room_req) { + this.leave_room_req = leave_room_req; + return this; + } + + public Builder leave_room_res(LeaveRoomRes leave_room_res) { + this.leave_room_res = leave_room_res; + return this; + } + + public Builder heartbeat_req(HeartbeatReq heartbeat_req) { + this.heartbeat_req = heartbeat_req; + return this; + } + + public Builder heartbeat_res(HeartbeatRes heartbeat_res) { + this.heartbeat_res = heartbeat_res; + return this; + } + + public Builder probe_notify(ProbeNotify probe_notify) { + this.probe_notify = probe_notify; + return this; + } + + @Override + public CProxy build() { + return new CProxy(header, uri, toast_notify, join_room_req, join_room_res, leave_room_req, leave_room_res, heartbeat_req, heartbeat_res, probe_notify, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/HeartbeatReq.java b/app/src/main/java/ikxd/cproxy/HeartbeatReq.java new file mode 100644 index 00000000..44f14308 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/HeartbeatReq.java @@ -0,0 +1,142 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Boolean; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class HeartbeatReq extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(HeartbeatReq.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_GAME_ID = ""; + + public static final Boolean DEFAULT_CHANGED = false; + + public static final Boolean DEFAULT_BACK_GROUND = false; + + /** + * 传入当前进行的游戏的gameid,如果非游戏中,不填或者填空字符串 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String game_id; + + /** + * gameid发生变化的时候为true,其他时候为false + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#BOOL" + ) + public final Boolean changed; + + /** + * 是否处于后台,true表示处于后台,false表示处于前台。前后台切换马上发个心跳 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#BOOL" + ) + public final Boolean back_ground; + + public HeartbeatReq(String game_id, Boolean changed, Boolean back_ground) { + this(game_id, changed, back_ground, ByteString.EMPTY); + } + + public HeartbeatReq(String game_id, Boolean changed, Boolean back_ground, + ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.game_id = game_id; + this.changed = changed; + this.back_ground = back_ground; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.game_id = game_id; + builder.changed = changed; + builder.back_ground = back_ground; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof HeartbeatReq)) return false; + HeartbeatReq o = (HeartbeatReq) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(game_id, o.game_id) + && Internal.equals(changed, o.changed) + && Internal.equals(back_ground, o.back_ground); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (game_id != null ? game_id.hashCode() : 0); + result = result * 37 + (changed != null ? changed.hashCode() : 0); + result = result * 37 + (back_ground != null ? back_ground.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String game_id; + + public Boolean changed; + + public Boolean back_ground; + + public Builder() { + } + + /** + * 传入当前进行的游戏的gameid,如果非游戏中,不填或者填空字符串 + */ + public Builder game_id(String game_id) { + this.game_id = game_id; + return this; + } + + /** + * gameid发生变化的时候为true,其他时候为false + */ + public Builder changed(Boolean changed) { + this.changed = changed; + return this; + } + + /** + * 是否处于后台,true表示处于后台,false表示处于前台。前后台切换马上发个心跳 + */ + public Builder back_ground(Boolean back_ground) { + this.back_ground = back_ground; + return this; + } + + @Override + public HeartbeatReq build() { + return new HeartbeatReq(game_id, changed, back_ground, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/HeartbeatRes.java b/app/src/main/java/ikxd/cproxy/HeartbeatRes.java new file mode 100644 index 00000000..64454764 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/HeartbeatRes.java @@ -0,0 +1,115 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +public final class HeartbeatRes extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(HeartbeatRes.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Long DEFAULT_NEXT = 0L; + + public static final Long DEFAULT_TIMESTAMP = 0L; + + /** + * 下一次心跳间隔,单位秒 + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long next; + + /** + * 服务器的unix timestamp,单位毫秒,用于客户端校准时间 + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long timestamp; + + public HeartbeatRes(Long next, Long timestamp) { + this(next, timestamp, ByteString.EMPTY); + } + + public HeartbeatRes(Long next, Long timestamp, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.next = next; + this.timestamp = timestamp; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.next = next; + builder.timestamp = timestamp; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof HeartbeatRes)) return false; + HeartbeatRes o = (HeartbeatRes) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(next, o.next) + && Internal.equals(timestamp, o.timestamp); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (next != null ? next.hashCode() : 0); + result = result * 37 + (timestamp != null ? timestamp.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Long next; + + public Long timestamp; + + public Builder() { + } + + /** + * 下一次心跳间隔,单位秒 + */ + public Builder next(Long next) { + this.next = next; + return this; + } + + /** + * 服务器的unix timestamp,单位毫秒,用于客户端校准时间 + */ + public Builder timestamp(Long timestamp) { + this.timestamp = timestamp; + return this; + } + + @Override + public HeartbeatRes build() { + return new HeartbeatRes(next, timestamp, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/Inner.java b/app/src/main/java/ikxd/cproxy/Inner.java new file mode 100644 index 00000000..81df5214 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/Inner.java @@ -0,0 +1,105 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import common.Header; +import java.lang.Integer; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +/** + * cproxy内部使用 + */ +public final class Inner extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Inner.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Integer DEFAULT_URI = 0; + + @WireField( + tag = 1, + adapter = "common.Header#ADAPTER" + ) + public final Header header; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer uri; + + public Inner(Header header, Integer uri) { + this(header, uri, ByteString.EMPTY); + } + + public Inner(Header header, Integer uri, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.header = header; + this.uri = uri; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.header = header; + builder.uri = uri; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof Inner)) return false; + Inner o = (Inner) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(header, o.header) + && Internal.equals(uri, o.uri); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (header != null ? header.hashCode() : 0); + result = result * 37 + (uri != null ? uri.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Header header; + + public Integer uri; + + public Builder() { + } + + public Builder header(Header header) { + this.header = header; + return this; + } + + public Builder uri(Integer uri) { + this.uri = uri; + return this; + } + + @Override + public Inner build() { + return new Inner(header, uri, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/InnerV2.java b/app/src/main/java/ikxd/cproxy/InnerV2.java new file mode 100644 index 00000000..d41ec546 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/InnerV2.java @@ -0,0 +1,130 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import common.Header; +import java.lang.Integer; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +/** + * cproxy新的解包方式 + */ +public final class InnerV2 extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(InnerV2.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Integer DEFAULT_URI = 0; + + public static final ByteString DEFAULT_PAYLOAD = ByteString.EMPTY; + + @WireField( + tag = 1, + adapter = "common.Header#ADAPTER" + ) + public final Header header; + + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#INT32" + ) + public final Integer uri; + + /** + * 业务包承载 + */ + @WireField( + tag = 3, + adapter = "com.squareup.wire.ProtoAdapter#BYTES" + ) + public final ByteString payload; + + public InnerV2(Header header, Integer uri, ByteString payload) { + this(header, uri, payload, ByteString.EMPTY); + } + + public InnerV2(Header header, Integer uri, ByteString payload, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.header = header; + this.uri = uri; + this.payload = payload; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.header = header; + builder.uri = uri; + builder.payload = payload; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof InnerV2)) return false; + InnerV2 o = (InnerV2) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(header, o.header) + && Internal.equals(uri, o.uri) + && Internal.equals(payload, o.payload); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (header != null ? header.hashCode() : 0); + result = result * 37 + (uri != null ? uri.hashCode() : 0); + result = result * 37 + (payload != null ? payload.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Header header; + + public Integer uri; + + public ByteString payload; + + public Builder() { + } + + public Builder header(Header header) { + this.header = header; + return this; + } + + public Builder uri(Integer uri) { + this.uri = uri; + return this; + } + + /** + * 业务包承载 + */ + public Builder payload(ByteString payload) { + this.payload = payload; + return this; + } + + @Override + public InnerV2 build() { + return new InnerV2(header, uri, payload, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/JoinRoomReq.java b/app/src/main/java/ikxd/cproxy/JoinRoomReq.java new file mode 100644 index 00000000..908ca38b --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/JoinRoomReq.java @@ -0,0 +1,84 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class JoinRoomReq extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(JoinRoomReq.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_ROOM_ID = ""; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String room_id; + + public JoinRoomReq(String room_id) { + this(room_id, ByteString.EMPTY); + } + + public JoinRoomReq(String room_id, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.room_id = room_id; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.room_id = room_id; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof JoinRoomReq)) return false; + JoinRoomReq o = (JoinRoomReq) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(room_id, o.room_id); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (room_id != null ? room_id.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String room_id; + + public Builder() { + } + + public Builder room_id(String room_id) { + this.room_id = room_id; + return this; + } + + @Override + public JoinRoomReq build() { + return new JoinRoomReq(room_id, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/JoinRoomRes.java b/app/src/main/java/ikxd/cproxy/JoinRoomRes.java new file mode 100644 index 00000000..1a6a712e --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/JoinRoomRes.java @@ -0,0 +1,84 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class JoinRoomRes extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(JoinRoomRes.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_ROOM_ID = ""; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String room_id; + + public JoinRoomRes(String room_id) { + this(room_id, ByteString.EMPTY); + } + + public JoinRoomRes(String room_id, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.room_id = room_id; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.room_id = room_id; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof JoinRoomRes)) return false; + JoinRoomRes o = (JoinRoomRes) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(room_id, o.room_id); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (room_id != null ? room_id.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String room_id; + + public Builder() { + } + + public Builder room_id(String room_id) { + this.room_id = room_id; + return this; + } + + @Override + public JoinRoomRes build() { + return new JoinRoomRes(room_id, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/LeaveRoomReq.java b/app/src/main/java/ikxd/cproxy/LeaveRoomReq.java new file mode 100644 index 00000000..e2839cfd --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/LeaveRoomReq.java @@ -0,0 +1,84 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class LeaveRoomReq extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(LeaveRoomReq.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_ROOM_ID = ""; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String room_id; + + public LeaveRoomReq(String room_id) { + this(room_id, ByteString.EMPTY); + } + + public LeaveRoomReq(String room_id, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.room_id = room_id; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.room_id = room_id; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof LeaveRoomReq)) return false; + LeaveRoomReq o = (LeaveRoomReq) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(room_id, o.room_id); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (room_id != null ? room_id.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String room_id; + + public Builder() { + } + + public Builder room_id(String room_id) { + this.room_id = room_id; + return this; + } + + @Override + public LeaveRoomReq build() { + return new LeaveRoomReq(room_id, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/LeaveRoomRes.java b/app/src/main/java/ikxd/cproxy/LeaveRoomRes.java new file mode 100644 index 00000000..daed9004 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/LeaveRoomRes.java @@ -0,0 +1,84 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class LeaveRoomRes extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(LeaveRoomRes.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_ROOM_ID = ""; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String room_id; + + public LeaveRoomRes(String room_id) { + this(room_id, ByteString.EMPTY); + } + + public LeaveRoomRes(String room_id, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.room_id = room_id; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.room_id = room_id; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof LeaveRoomRes)) return false; + LeaveRoomRes o = (LeaveRoomRes) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(room_id, o.room_id); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (room_id != null ? room_id.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String room_id; + + public Builder() { + } + + public Builder room_id(String room_id) { + this.room_id = room_id; + return this; + } + + @Override + public LeaveRoomRes build() { + return new LeaveRoomRes(room_id, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/ProbeNotify.java b/app/src/main/java/ikxd/cproxy/ProbeNotify.java new file mode 100644 index 00000000..60eca689 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/ProbeNotify.java @@ -0,0 +1,90 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Long; +import java.lang.Object; +import java.lang.Override; +import okio.ByteString; + +public final class ProbeNotify extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ProbeNotify.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final Long DEFAULT_TS = 0L; + + /** + * nano seconds + */ + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#INT64" + ) + public final Long ts; + + public ProbeNotify(Long ts) { + this(ts, ByteString.EMPTY); + } + + public ProbeNotify(Long ts, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.ts = ts; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.ts = ts; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof ProbeNotify)) return false; + ProbeNotify o = (ProbeNotify) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(ts, o.ts); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (ts != null ? ts.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public Long ts; + + public Builder() { + } + + /** + * nano seconds + */ + public Builder ts(Long ts) { + this.ts = ts; + return this; + } + + @Override + public ProbeNotify build() { + return new ProbeNotify(ts, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/ToastNotify.java b/app/src/main/java/ikxd/cproxy/ToastNotify.java new file mode 100644 index 00000000..c4ee6f58 --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/ToastNotify.java @@ -0,0 +1,110 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import android.os.Parcelable; +import com.squareup.wire.AndroidMessage; +import com.squareup.wire.Message; +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireField; +import com.squareup.wire.internal.Internal; +import java.lang.Boolean; +import java.lang.Object; +import java.lang.Override; +import java.lang.String; +import okio.ByteString; + +public final class ToastNotify extends AndroidMessage { + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ToastNotify.class); + + public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + + private static final long serialVersionUID = 0L; + + public static final String DEFAULT_MSG = ""; + + public static final Boolean DEFAULT_LOGOUT = false; + + @WireField( + tag = 1, + adapter = "com.squareup.wire.ProtoAdapter#STRING" + ) + public final String msg; + + /** + * 是否需要客户端退出登陆并删除token,用于踢人 + */ + @WireField( + tag = 2, + adapter = "com.squareup.wire.ProtoAdapter#BOOL" + ) + public final Boolean logout; + + public ToastNotify(String msg, Boolean logout) { + this(msg, logout, ByteString.EMPTY); + } + + public ToastNotify(String msg, Boolean logout, ByteString unknownFields) { + super(ADAPTER, unknownFields); + this.msg = msg; + this.logout = logout; + } + + @Override + public Builder newBuilder() { + Builder builder = new Builder(); + builder.msg = msg; + builder.logout = logout; + builder.addUnknownFields(unknownFields()); + return builder; + } + + @Override + public boolean equals(Object other) { + if (other == this) return true; + if (!(other instanceof ToastNotify)) return false; + ToastNotify o = (ToastNotify) other; + return unknownFields().equals(o.unknownFields()) + && Internal.equals(msg, o.msg) + && Internal.equals(logout, o.logout); + } + + @Override + public int hashCode() { + int result = super.hashCode; + if (result == 0) { + result = unknownFields().hashCode(); + result = result * 37 + (msg != null ? msg.hashCode() : 0); + result = result * 37 + (logout != null ? logout.hashCode() : 0); + super.hashCode = result; + } + return result; + } + + public static final class Builder extends Message.Builder { + public String msg; + + public Boolean logout; + + public Builder() { + } + + public Builder msg(String msg) { + this.msg = msg; + return this; + } + + /** + * 是否需要客户端退出登陆并删除token,用于踢人 + */ + public Builder logout(Boolean logout) { + this.logout = logout; + return this; + } + + @Override + public ToastNotify build() { + return new ToastNotify(msg, logout, super.buildUnknownFields()); + } + } +} diff --git a/app/src/main/java/ikxd/cproxy/Uri.java b/app/src/main/java/ikxd/cproxy/Uri.java new file mode 100644 index 00000000..8bc652ac --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/Uri.java @@ -0,0 +1,64 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +public enum Uri implements WireEnum { + kUriNone(0), + + kUriToastNotify(11), + + kUriJoinRoomReq(12), + + kUriJoinRoomRes(13), + + kUriLeaveRoomReq(14), + + kUriLeaveRoomRes(15), + + /** + * 由于不同的websocket库不同,有些不支持心跳,因此心跳单独出来 + */ + kUriHeartbeatReq(16), + + kUriHeartbeatRes(17), + + /** + * 探针,原样返回 + */ + kUriProbeNotify(18); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(Uri.class); + + private final int value; + + Uri(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static Uri fromValue(int value) { + switch (value) { + case 0: return kUriNone; + case 11: return kUriToastNotify; + case 12: return kUriJoinRoomReq; + case 13: return kUriJoinRoomRes; + case 14: return kUriLeaveRoomReq; + case 15: return kUriLeaveRoomRes; + case 16: return kUriHeartbeatReq; + case 17: return kUriHeartbeatRes; + case 18: return kUriProbeNotify; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} diff --git a/app/src/main/java/ikxd/cproxy/WsCode.java b/app/src/main/java/ikxd/cproxy/WsCode.java new file mode 100644 index 00000000..4ddc16ee --- /dev/null +++ b/app/src/main/java/ikxd/cproxy/WsCode.java @@ -0,0 +1,68 @@ +// Code generated by Wire protocol buffer compiler, do not edit. +// Source file: cproxy.proto +package ikxd.cproxy; + +import com.squareup.wire.ProtoAdapter; +import com.squareup.wire.WireEnum; +import java.lang.Override; + +/** + * websocket 自定义code约定,代码可以不用 + */ +public enum WsCode implements WireEnum { + kWsCodeNone(0), + + /** + * 以下4000-4100 的错误码下,客户端不要重连 + * 同样的uid在不同设备上发起新连接,则断掉旧连接 + */ + kWsCloseKickOff(4000), + + /** + * 同样的uid在相同的设备上发起新连接,则断掉就连接 + */ + kWsCloseDisconnect(4001), + + /** + * 账号/设备被封禁 + */ + kWsCloseBanned(4002), + + /** + * version not supported any more + */ + kWsCloseVersionNS(4003), + + /** + * token非法 + */ + kWsCloseTokenInvalid(4101); + + public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(WsCode.class); + + private final int value; + + WsCode(int value) { + this.value = value; + } + + /** + * Return the constant for {@code value} or null. + */ + public static WsCode fromValue(int value) { + switch (value) { + case 0: return kWsCodeNone; + case 4000: return kWsCloseKickOff; + case 4001: return kWsCloseDisconnect; + case 4002: return kWsCloseBanned; + case 4003: return kWsCloseVersionNS; + case 4101: return kWsCloseTokenInvalid; + default: return null; + } + } + + @Override + public int getValue() { + return value; + } +} From 5d96ede8d41936e75a5f961819ece6c7e0faa4f1 Mon Sep 17 00:00:00 2001 From: gongyongfeng2 Date: Mon, 23 Dec 2019 10:41:21 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../svgaplayer/SVGADynamicEntity.kt | 7 +- .../svgaplayer/SVGAExecutorService.kt | 29 +++++ .../opensource/svgaplayer/SVGAImageView.kt | 7 +- .../com/opensource/svgaplayer/SVGAParser.kt | 102 +++++++++++------- 4 files changed, 102 insertions(+), 43 deletions(-) create mode 100644 library/src/main/java/com/opensource/svgaplayer/SVGAExecutorService.kt diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt b/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt index 4b5ac5e4..bf7b4a45 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt @@ -50,7 +50,7 @@ class SVGADynamicEntity { fun setDynamicImage(url: String, forKey: String) { val handler = android.os.Handler() - SVGAParser.threadPoolExecutor.execute { + SVGAExecutorService.executorTask(Runnable { (URL(url).openConnection() as? HttpURLConnection)?.let { try { it.connectTimeout = 20 * 1000 @@ -71,7 +71,10 @@ class SVGADynamicEntity { } } } - } + }) +// SVGAParser.threadPoolExecutor.execute { +// +// } } fun setDynamicText(text: String, textPaint: TextPaint, forKey: String) { diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAExecutorService.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAExecutorService.kt new file mode 100644 index 00000000..e69b4fb8 --- /dev/null +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAExecutorService.kt @@ -0,0 +1,29 @@ +package com.opensource.svgaplayer + +import java.util.concurrent.Executor + +/** + * Created by huangzhilong on 2019-07-23. + * 设置线程池,没设置则new thread(原来逻辑) + */ + +class SVGAExecutorService { + + companion object { + + private var mExecutorService: Executor? = null + + fun setExecutorService(executorService: Executor?) { + mExecutorService = executorService + } + + fun executorTask(runnable: Runnable) { + if (mExecutorService != null) { + mExecutorService?.execute(runnable) + } else { + var thread = Thread(runnable) + thread.start() + } + } + } +} \ No newline at end of file diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt index 0bbd0a98..5ab57964 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt @@ -88,7 +88,7 @@ open class SVGAImageView : ImageView { } typedArray.getString(R.styleable.SVGAImageView_source)?.let { val parser = SVGAParser(context) - Thread { + SVGAExecutorService.executorTask(Runnable { val callback: SVGAParser.ParseCompletion = object : SVGAParser.ParseCompletion { override fun onComplete(videoItem: SVGAVideoEntity) { this@SVGAImageView.post { @@ -108,7 +108,10 @@ open class SVGAImageView : ImageView { } else { parser.parse(it, callback) } - }.start() + }) +// Thread { +// +// }.start() } typedArray.recycle() } diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt index caef9192..45a9ddae 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt @@ -28,23 +28,27 @@ class SVGAParser(private val context: Context) { fun onComplete(videoItem: SVGAVideoEntity) fun onError() - } open class FileDownloader { var noCache = false - open fun resume(url: URL, complete: (inputStream: InputStream) -> Unit, failure: (e: Exception) -> Unit): () -> Unit { + open fun resume( + url: URL, complete: (inputStream: InputStream) -> Unit, failure: (e: Exception) -> Unit + ): () -> Unit { var cancelled = false val cancelBlock = { cancelled = true } - threadPoolExecutor.execute { + + SVGAExecutorService.executorTask(Runnable { try { if (HttpResponseCache.getInstalled() == null && !noCache) { - Log.e("SVGAParser", "SVGAParser can not handle cache before install HttpResponseCache. see https://github.com/yyued/SVGAPlayer-Android#cache") - Log.e("SVGAParser", "在配置 HttpResponseCache 前 SVGAParser 无法缓存. 查看 https://github.com/yyued/SVGAPlayer-Android#cache ") + Log.e("SVGAParser", + "SVGAParser can not handle cache before install HttpResponseCache. see https://github.com/yyued/SVGAPlayer-Android#cache") + Log.e("SVGAParser", + "在配置 HttpResponseCache 前 SVGAParser 无法缓存. 查看 https://github.com/yyued/SVGAPlayer-Android#cache ") } (url.openConnection() as? HttpURLConnection)?.let { it.connectTimeout = 20 * 1000 @@ -65,7 +69,7 @@ class SVGAParser(private val context: Context) { outputStream.write(buffer, 0, count) } if (cancelled) { - return@execute + return@Runnable } ByteArrayInputStream(outputStream.toByteArray()).use { complete(it) @@ -77,41 +81,47 @@ class SVGAParser(private val context: Context) { e.printStackTrace() failure(e) } - } + }) +// threadPoolExecutor.execute { +// +// } return cancelBlock } - } var fileDownloader = FileDownloader() - companion object { - private val threadPoolBlockingQueue = LinkedBlockingQueue() - internal var threadPoolExecutor = ThreadPoolExecutor(3, 10, 60000, TimeUnit.MILLISECONDS, threadPoolBlockingQueue) - fun setThreadPoolExecutor(executor: ThreadPoolExecutor) { - threadPoolExecutor = executor - } - } +// companion object { +// private val threadPoolBlockingQueue = LinkedBlockingQueue() +// internal var threadPoolExecutor = +// ThreadPoolExecutor(3, 10, 60000, TimeUnit.MILLISECONDS, threadPoolBlockingQueue) +// +// fun setThreadPoolExecutor(executor: ThreadPoolExecutor) { +// threadPoolExecutor = executor +// } +// } fun decodeFromAssets(name: String, callback: ParseCompletion?) { try { context.assets.open(name)?.let { - this.decodeFromInputStream(it, buildCacheKey("file:///assets/$name"), callback, true) + this.decodeFromInputStream(it, buildCacheKey("file:///assets/$name"), callback, + true) } - } - catch (e: java.lang.Exception) { + } catch (e: java.lang.Exception) { this.invokeErrorCallback(e, callback) } } fun decodeFromURL(url: URL, callback: ParseCompletion?): (() -> Unit)? { if (this.isCached(buildCacheKey(url))) { - threadPoolExecutor.execute { + SVGAExecutorService.executorTask(Runnable { this.decodeFromCacheKey(buildCacheKey(url), callback) - } + }) +// threadPoolExecutor.execute { +// +// } return null - } - else { + } else { return fileDownloader.resume(url, { this.decodeFromInputStream(it, this.buildCacheKey(url), callback) }, { @@ -120,8 +130,11 @@ class SVGAParser(private val context: Context) { } } - fun decodeFromInputStream(inputStream: InputStream, cacheKey: String, callback: ParseCompletion?, closeInputStream: Boolean = false) { - threadPoolExecutor.execute { + fun decodeFromInputStream( + inputStream: InputStream, cacheKey: String, callback: ParseCompletion?, + closeInputStream: Boolean = false + ) { + SVGAExecutorService.executorTask(Runnable { try { readAsBytes(inputStream)?.let { bytes -> if (bytes.size > 4 && bytes[0].toInt() == 80 && bytes[1].toInt() == 75 && bytes[2].toInt() == 3 && bytes[3].toInt() == 4) { @@ -131,10 +144,10 @@ class SVGAParser(private val context: Context) { } } this.decodeFromCacheKey(cacheKey, callback) - } - else { + } else { inflate(bytes)?.let { - val videoItem = SVGAVideoEntity(MovieEntity.ADAPTER.decode(it), File(cacheKey)) + val videoItem = + SVGAVideoEntity(MovieEntity.ADAPTER.decode(it), File(cacheKey)) videoItem.prepare { this.invokeCompleteCallback(videoItem, callback) } @@ -148,13 +161,18 @@ class SVGAParser(private val context: Context) { inputStream.close() } } - } + }) + +// threadPoolExecutor.execute { +// +// } } /** * @deprecated from 2.4.0 */ - @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromAssets(assetsName, callback)")) + @Deprecated("This method has been deprecated from 2.4.0.", + ReplaceWith("this.decodeFromAssets(assetsName, callback)")) fun parse(assetsName: String, callback: ParseCompletion?) { this.decodeFromAssets(assetsName, callback) } @@ -162,7 +180,8 @@ class SVGAParser(private val context: Context) { /** * @deprecated from 2.4.0 */ - @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromURL(url, callback)")) + @Deprecated("This method has been deprecated from 2.4.0.", + ReplaceWith("this.decodeFromURL(url, callback)")) fun parse(url: URL, callback: ParseCompletion?) { this.decodeFromURL(url, callback) } @@ -170,8 +189,12 @@ class SVGAParser(private val context: Context) { /** * @deprecated from 2.4.0 */ - @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith("this.decodeFromInputStream(inputStream, cacheKey, callback, closeInputStream)")) - fun parse(inputStream: InputStream, cacheKey: String, callback: ParseCompletion?, closeInputStream: Boolean = false) { + @Deprecated("This method has been deprecated from 2.4.0.", ReplaceWith( + "this.decodeFromInputStream(inputStream, cacheKey, callback, closeInputStream)")) + fun parse( + inputStream: InputStream, cacheKey: String, callback: ParseCompletion?, + closeInputStream: Boolean = false + ) { this.decodeFromInputStream(inputStream, cacheKey, callback, closeInputStream) } @@ -198,7 +221,8 @@ class SVGAParser(private val context: Context) { File(cacheDir, "movie.binary").takeIf { it.isFile }?.let { binaryFile -> try { FileInputStream(binaryFile).use { - this.invokeCompleteCallback(SVGAVideoEntity(MovieEntity.ADAPTER.decode(it), cacheDir), callback) + this.invokeCompleteCallback( + SVGAVideoEntity(MovieEntity.ADAPTER.decode(it), cacheDir), callback) } } catch (e: Exception) { cacheDir.delete() @@ -220,7 +244,8 @@ class SVGAParser(private val context: Context) { } byteArrayOutputStream.toString().let { JSONObject(it).let { - this.invokeCompleteCallback(SVGAVideoEntity(it, cacheDir), callback) + this.invokeCompleteCallback(SVGAVideoEntity(it, cacheDir), + callback) } } } @@ -249,7 +274,8 @@ class SVGAParser(private val context: Context) { private fun buildCacheKey(url: URL): String = buildCacheKey(url.toString()) - private fun buildCacheDir(cacheKey: String): File = File(context.cacheDir.absolutePath + "/" + cacheKey + "/") + private fun buildCacheDir(cacheKey: String): File = + File(context.cacheDir.absolutePath + "/" + cacheKey + "/") private fun readAsBytes(inputStream: InputStream): ByteArray? { ByteArrayOutputStream().use { byteArrayOutputStream -> @@ -258,8 +284,7 @@ class SVGAParser(private val context: Context) { val count = inputStream.read(byteArray, 0, 2048) if (count <= 0) { break - } - else { + } else { byteArrayOutputStream.write(byteArray, 0, count) } } @@ -276,8 +301,7 @@ class SVGAParser(private val context: Context) { val count = inflater.inflate(inflatedBytes, 0, 2048) if (count <= 0) { break - } - else { + } else { inflatedOutputStream.write(inflatedBytes, 0, count) } } From 449d8422c43c6c1c3d2e2c1d8fec44cb88d8d82a Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Mon, 23 Dec 2019 12:33:10 +0800 Subject: [PATCH 07/19] update wire: Builder change to unbox type --- .../ponycui_home/svgaplayer/MainActivity.java | 3 +- .../libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar | Bin 109613 -> 108888 bytes library/proto/svga.proto | 131 ++++++++++++++++++ .../svgaplayer/proto/AudioEntity.java | 8 +- .../svgaplayer/proto/FrameEntity.java | 6 +- .../opensource/svgaplayer/proto/Layout.java | 8 +- .../svgaplayer/proto/MovieParams.java | 8 +- .../svgaplayer/proto/ShapeEntity.java | 36 ++--- .../svgaplayer/proto/SpriteEntity.java | 2 +- .../svgaplayer/proto/Transform.java | 12 +- 10 files changed, 173 insertions(+), 41 deletions(-) create mode 100644 library/proto/svga.proto diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java index fc0ff25b..266d4c07 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java @@ -18,6 +18,7 @@ import com.opensource.svgaplayer.proto.AudioEntity; +import java.lang.reflect.Type; import java.util.ArrayList; import ikxd.cproxy.InnerV2; @@ -61,7 +62,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { ser1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - AudioEntity entity = new AudioEntity.Builder().audioKey("dsds").totalTime(33).build(); + AudioEntity entity = new AudioEntity.Builder().totalTime(33).build(); byte[] payload = entity.encode(); InnerV2 innerV2 = new InnerV2.Builder().payload(ByteString.of(payload)).build(); bytes = innerV2.encode(); diff --git a/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar b/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar index 37fec6b4ce2412a4d62cb9d803b784fb6d7107b7..67f9090d4adf279dd07bb231f3a7ae10f91b9cb1 100644 GIT binary patch delta 15071 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 IoG2ZE$xD?(Xgc4Hh(LfFOb70lD8j_dI^U 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 F{{gNnDgpoi diff --git a/library/proto/svga.proto b/library/proto/svga.proto new file mode 100644 index 00000000..bfc3aa65 --- /dev/null +++ b/library/proto/svga.proto @@ -0,0 +1,131 @@ +syntax = "proto3"; +package com.opensource.svga; +option objc_class_prefix = "SVGAProto"; +option java_package = "com.opensource.svgaplayer.proto"; + +message MovieParams { + float viewBoxWidth = 1; // 画布宽 + float viewBoxHeight = 2; // 画布高 + int32 fps = 3; // 动画每秒播放帧数,合法值是 [1, 2, 3, 5, 6, 10, 12, 15, 20, 30, 60] 中的任意一个。 + int32 frames = 4; // 动画总帧数 +} + +message SpriteEntity { + string imageKey = 1; // 元件所对应的位图键名, 如果 imageKey 含有 .vector 后缀,该 sprite 为矢量图层 含有 .matte 后缀,该 sprite 为遮罩图层。 + repeated FrameEntity frames = 2; // 帧列表 + string matteKey = 3; // 被遮罩图层的 matteKey 对应的是其遮罩图层的 imageKey. +} + +message AudioEntity { + string audioKey = 1; // 音频文件名 + int32 startFrame = 2; // 音频播放起始帧 + int32 endFrame = 3; // 音频播放结束帧 + int32 startTime = 4; // 音频播放起始时间(相对音频长度) + int32 totalTime = 5; // 音频总长度 +} + +message Layout { + float x = 1; + float y = 2; + float width = 3; + float height = 4; +} + +message Transform { + float a = 1; + float b = 2; + float c = 3; + float d = 4; + float tx = 5; + float ty = 6; +} + +message ShapeEntity { + + enum ShapeType { + SHAPE = 0; // 路径 + RECT = 1; // 矩形 + ELLIPSE = 2; // 圆形 + KEEP = 3; // 与前帧一致 + } + + message ShapeArgs { + string d = 1; // SVG 路径 + } + + message RectArgs { + float x = 1; + float y = 2; + float width = 3; + float height = 4; + float cornerRadius = 5; // 圆角半径 + } + + message EllipseArgs { + float x = 1; // 圆中心点 X + float y = 2; // 圆中心点 Y + float radiusX = 3; // 横向半径 + float radiusY = 4; // 纵向半径 + } + + message ShapeStyle { + + message RGBAColor { + float r = 1; + float g = 2; + float b = 3; + float a = 4; + } + + enum LineCap { + LineCap_BUTT = 0; + LineCap_ROUND = 1; + LineCap_SQUARE = 2; + } + + enum LineJoin { + LineJoin_MITER = 0; + LineJoin_ROUND = 1; + LineJoin_BEVEL = 2; + } + + RGBAColor fill = 1; // 填充色 + RGBAColor stroke = 2; // 描边色 + float strokeWidth = 3; // 描边宽 + LineCap lineCap = 4; // 线段端点样式 + LineJoin lineJoin = 5; // 线段连接样式 + float miterLimit = 6; // 尖角限制 + float lineDashI = 7; // 虚线参数 Dash + float lineDashII = 8; // 虚线参数 Gap + float lineDashIII = 9; // 虚线参数 Offset + + } + + ShapeType type = 1; // 矢量类型 + oneof args { + ShapeArgs shape = 2; + RectArgs rect = 3; + EllipseArgs ellipse = 4; + } // 矢量参数 + ShapeStyle styles = 10; // 渲染参数 + Transform transform = 11; // 矢量图层 2D 变换矩阵 + +} + +message FrameEntity { + float alpha = 1; // 透明度 + Layout layout = 2; // 初始约束大小 + Transform transform = 3; // 2D 变换矩阵 + string clipPath = 4; // 遮罩路径,使用 SVG 标准 Path 绘制图案进行 Mask 遮罩。 + repeated ShapeEntity shapes = 5; // 矢量元素列表 +} + +message MovieEntity { + + string version = 1; // SVGA 格式版本号 + MovieParams params = 2; // 动画参数 + map images = 3; // Key 是位图键名,Value 是位图文件名或二进制 PNG 数据。 + repeated SpriteEntity sprites = 4; // 元素列表 + repeated AudioEntity audios = 5; // 音频列表 + +} diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java index 261d49f6..5c63c8f2 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java @@ -135,13 +135,13 @@ public int hashCode() { public static final class Builder extends Message.Builder { public String audioKey; - public Integer startFrame; + public int startFrame; - public Integer endFrame; + public int endFrame; - public Integer startTime; + public int startTime; - public Integer totalTime; + public int totalTime; public Builder() { } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java index 4f43e512..e70a294f 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/FrameEntity.java @@ -75,12 +75,12 @@ public final class FrameEntity extends AndroidMessage shapes; public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, - List shapes) { + List shapes) { this(alpha, layout, transform, clipPath, shapes, ByteString.EMPTY); } public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, - List shapes, ByteString unknownFields) { + List shapes, ByteString unknownFields) { super(ADAPTER, unknownFields); this.alpha = alpha; this.layout = layout; @@ -130,7 +130,7 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float alpha; + public float alpha; public Layout layout; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java index 519a9a0a..7cbb0320 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java @@ -103,13 +103,13 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float x; + public float x; - public Float y; + public float y; - public Float width; + public float width; - public Float height; + public float height; public Builder() { } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java index 92761892..6a645f94 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java @@ -116,13 +116,13 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float viewBoxWidth; + public float viewBoxWidth; - public Float viewBoxHeight; + public float viewBoxHeight; - public Integer fps; + public int fps; - public Integer frames; + public int frames; public Builder() { } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java index c484efc8..c169574e 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java @@ -437,15 +437,15 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float x; + public float x; - public Float y; + public float y; - public Float width; + public float width; - public Float height; + public float height; - public Float cornerRadius; + public float cornerRadius; public Builder() { } @@ -590,13 +590,13 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float x; + public float x; - public Float y; + public float y; - public Float radiusX; + public float radiusX; - public Float radiusY; + public float radiusY; public Builder() { } @@ -828,19 +828,19 @@ public static final class Builder extends Message.Builder { public RGBAColor stroke; - public Float strokeWidth; + public float strokeWidth; public LineCap lineCap; public LineJoin lineJoin; - public Float miterLimit; + public float miterLimit; - public Float lineDashI; + public float lineDashI; - public Float lineDashII; + public float lineDashII; - public Float lineDashIII; + public float lineDashIII; public Builder() { } @@ -1016,13 +1016,13 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float r; + public float r; - public Float g; + public float g; - public Float b; + public float b; - public Float a; + public float a; public Builder() { } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java index 76581e76..0b7de393 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java @@ -59,7 +59,7 @@ public SpriteEntity(String imageKey, List frames, String matteKey) } public SpriteEntity(String imageKey, List frames, String matteKey, - ByteString unknownFields) { + ByteString unknownFields) { super(ADAPTER, unknownFields); this.imageKey = imageKey; this.frames = Internal.immutableCopyOf("frames", frames); diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java index 1a8ecd58..fbe462f4 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java @@ -130,17 +130,17 @@ public int hashCode() { } public static final class Builder extends Message.Builder { - public Float a; + public float a; - public Float b; + public float b; - public Float c; + public float c; - public Float d; + public float d; - public Float tx; + public float tx; - public Float ty; + public float ty; public Builder() { } From effe546c181b39ac82a7b31d815e688a66438fdd Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Thu, 16 Jan 2020 16:31:51 +0800 Subject: [PATCH 08/19] =?UTF-8?q?svga=20=E5=9B=9E=E8=B0=83=E4=B8=A4?= =?UTF-8?q?=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/red_pocket_miss.svga | Bin 0 -> 26850 bytes .../AnimationFromAssetsActivity.java | 2 +- .../com/opensource/svgaplayer/SVGAParser.kt | 49 ++++++++++-------- 3 files changed, 27 insertions(+), 24 deletions(-) create mode 100755 app/src/main/assets/red_pocket_miss.svga diff --git a/app/src/main/assets/red_pocket_miss.svga b/app/src/main/assets/red_pocket_miss.svga new file mode 100755 index 0000000000000000000000000000000000000000..a79ee156f1bfb056602c432e463981aea84c9e4e GIT binary patch literal 26850 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java index c6ee4e6e..fd76aa2b 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java @@ -36,7 +36,7 @@ public void onClick(View view) { } private void loadAnimation() { - parser.decodeFromAssets("daxiao.svga", new SVGAParser.ParseCompletion() { + parser.decodeFromAssets("red_pocket_miss.svga", new SVGAParser.ParseCompletion() { @Override public void onComplete(@NotNull SVGAVideoEntity videoItem) { animationView.setVideoItem(videoItem); diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt index 45a9ddae..ae217fc0 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt @@ -227,37 +227,40 @@ class SVGAParser(private val context: Context) { } catch (e: Exception) { cacheDir.delete() binaryFile.delete() - throw e + decodeFromSpec(cacheDir, callback) } } - File(cacheDir, "movie.spec").takeIf { it.isFile }?.let { jsonFile -> - try { - FileInputStream(jsonFile).use { fileInputStream -> - ByteArrayOutputStream().use { byteArrayOutputStream -> - val buffer = ByteArray(2048) - while (true) { - val size = fileInputStream.read(buffer, 0, buffer.size) - if (size == -1) { - break - } - byteArrayOutputStream.write(buffer, 0, size) + } catch (e: Exception) { + this.invokeErrorCallback(e, callback) + } + } + + private fun decodeFromSpec(cacheDir: File, callback: ParseCompletion?) { + File(cacheDir, "movie.spec").takeIf { it.isFile }?.let { jsonFile -> + try { + FileInputStream(jsonFile).use { fileInputStream -> + ByteArrayOutputStream().use { byteArrayOutputStream -> + val buffer = ByteArray(2048) + while (true) { + val size = fileInputStream.read(buffer, 0, buffer.size) + if (size == -1) { + break } - byteArrayOutputStream.toString().let { - JSONObject(it).let { - this.invokeCompleteCallback(SVGAVideoEntity(it, cacheDir), - callback) - } + byteArrayOutputStream.write(buffer, 0, size) + } + byteArrayOutputStream.toString().let { + JSONObject(it).let { + this.invokeCompleteCallback(SVGAVideoEntity(it, cacheDir), + callback) } } } - } catch (e: Exception) { - cacheDir.delete() - jsonFile.delete() - throw e } + } catch (e: Exception) { + cacheDir.delete() + jsonFile.delete() + throw e } - } catch (e: Exception) { - this.invokeErrorCallback(e, callback) } } From 9fa34a0ad99cd98d167e16e3dce5fdc2b0cdf76a Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Fri, 17 Jan 2020 19:21:08 +0800 Subject: [PATCH 09/19] =?UTF-8?q?0.1.2=20channel=5Fid=5Ftest=20=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 15 +++++++++++++++ gradle.properties | 4 +++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index dd61cd40..0a33b8d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,3 +34,18 @@ dependencies { implementation 'com.squareup.okhttp3:okhttp:3.4.1' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } + + +task testGit() { + testExc("channel_id_test") +} + +def testExc(String channelId) { + exec { + workingDir '.' +// commandLine 'git commit -m \'test\'' +// commandLine 'git', 'status' +// commandLine 'git', 'commit', '-m', 'test' + commandLine 'git', 'commit', '-am', "${version} ${channelId} 渠道包" + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 1d3591c8..5623b6d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,6 @@ # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true + +version=0.1.2 \ No newline at end of file From 1392f2764f240b1d7064f57a16062927a32e7977 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Tue, 11 Feb 2020 23:25:07 +0800 Subject: [PATCH 10/19] =?UTF-8?q?0.1.2=20channel=5Fid=5Ftest=20=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index 66d81bc4..fad62ec8 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -29,8 +29,8 @@ android { } dependencies { -// api fileTree(include: ['*.jar'], dir: 'libs') - compileOnly fileTree(include: ['*.jar'], dir: 'libs') + api fileTree(include: ['*.jar'], dir: 'libs') +// compileOnly fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.squareup.okio:okio:2.4.2' // implementation 'com.squareup.wire:wire-runtime:3.0.2' From eca2149c7dfb378817d38ce6d5ed6c0dfb353e18 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Wed, 12 Feb 2020 23:25:19 +0800 Subject: [PATCH 11/19] =?UTF-8?q?0.1.2=20channel=5Fid=5Ftest=20=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar | Bin 108888 -> 109944 bytes .../svgaplayer/proto/AudioEntity.java | 11 +- .../svgaplayer/proto/FrameEntity.java | 11 +- .../opensource/svgaplayer/proto/Layout.java | 4 +- .../svgaplayer/proto/MovieEntity.java | 7 +- .../svgaplayer/proto/MovieParams.java | 9 +- .../svgaplayer/proto/ShapeEntity.java | 114 ++++++++++++++---- .../svgaplayer/proto/SpriteEntity.java | 7 +- .../svgaplayer/proto/Transform.java | 6 +- 9 files changed, 126 insertions(+), 43 deletions(-) diff --git a/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar b/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar index 67f9090d4adf279dd07bb231f3a7ae10f91b9cb1..95489e246b4a57dd95751832d4f47c9f166d41f9 100644 GIT binary patch delta 20147 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 delta 19052 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 { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(AudioEntity.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + AudioEntity.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -78,12 +81,12 @@ public final class AudioEntity extends AndroidMessage { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(FrameEntity.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + FrameEntity.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -75,12 +78,12 @@ public final class FrameEntity extends AndroidMessage shapes; public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, - List shapes) { + List shapes) { this(alpha, layout, transform, clipPath, shapes, ByteString.EMPTY); } public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, - List shapes, ByteString unknownFields) { + List shapes, ByteString unknownFields) { super(ADAPTER, unknownFields); this.alpha = alpha; this.layout = layout; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java index 7cbb0320..52a0aa68 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -13,7 +15,7 @@ public final class Layout extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Layout.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java index d9023c1e..96b3e5ea 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -14,9 +16,10 @@ import okio.ByteString; public final class MovieEntity extends AndroidMessage { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(MovieEntity.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + MovieEntity.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java index 6a645f94..fbabfbb7 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -11,9 +13,10 @@ import okio.ByteString; public final class MovieParams extends AndroidMessage { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(MovieParams.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + MovieParams.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -70,7 +73,7 @@ public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer } public MovieParams(Float viewBoxWidth, Float viewBoxHeight, Integer fps, Integer frames, - ByteString unknownFields) { + ByteString unknownFields) { super(ADAPTER, unknownFields); this.viewBoxWidth = viewBoxWidth; this.viewBoxHeight = viewBoxHeight; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java index c169574e..3b0a73e3 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/ShapeEntity.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -12,9 +14,10 @@ import okio.ByteString; public final class ShapeEntity extends AndroidMessage { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeEntity.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + ShapeEntity.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -30,6 +33,11 @@ public final class ShapeEntity extends AndroidMessage 1) { throw new IllegalArgumentException("at most one of shape, rect, ellipse may be non-null"); } this.type = type; + this._type_value = _type_value; this.styles = styles; this.transform = transform; this.shape = shape; @@ -91,10 +100,18 @@ public ShapeEntity(ShapeType type, ShapeStyle styles, Transform transform, Shape this.ellipse = ellipse; } + /** + * 对应 type 枚举类型的原始int,反序列化出来的值可以从这里取 + */ + public final int getTypeValue() { + return _type_value; + } + @Override public Builder newBuilder() { Builder builder = new Builder(); builder.type = type; + builder._type_value = _type_value; builder.styles = styles; builder.transform = transform; builder.shape = shape; @@ -111,6 +128,7 @@ public boolean equals(Object other) { ShapeEntity o = (ShapeEntity) other; return unknownFields().equals(o.unknownFields()) && Internal.equals(type, o.type) + && Internal.equals(_type_value, o._type_value) && Internal.equals(styles, o.styles) && Internal.equals(transform, o.transform) && Internal.equals(shape, o.shape) @@ -124,6 +142,7 @@ public int hashCode() { if (result == 0) { result = unknownFields().hashCode(); result = result * 37 + (type != null ? type.hashCode() : 0); + result = result * 37 + _type_value; result = result * 37 + (styles != null ? styles.hashCode() : 0); result = result * 37 + (transform != null ? transform.hashCode() : 0); result = result * 37 + (shape != null ? shape.hashCode() : 0); @@ -137,6 +156,8 @@ public int hashCode() { public static final class Builder extends Message.Builder { public ShapeType type; + private int _type_value; + public ShapeStyle styles; public Transform transform; @@ -198,7 +219,7 @@ public Builder ellipse(EllipseArgs ellipse) { @Override public ShapeEntity build() { - return new ShapeEntity(type, styles, transform, shape, rect, ellipse, super.buildUnknownFields()); + return new ShapeEntity(type, _type_value, styles, transform, shape, rect, ellipse, super.buildUnknownFields()); } } @@ -221,7 +242,9 @@ public enum ShapeType implements WireEnum { /** * 与前帧一致 */ - KEEP(3); + KEEP(3), + + UNRECOGNIZED(-1); public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(ShapeType.class); @@ -240,7 +263,7 @@ public static ShapeType fromValue(int value) { case 1: return RECT; case 2: return ELLIPSE; case 3: return KEEP; - default: return null; + default: return UNRECOGNIZED; } } @@ -253,7 +276,7 @@ public int getValue() { public static final class ShapeArgs extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeArgs.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -330,7 +353,7 @@ public ShapeArgs build() { public static final class RectArgs extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(RectArgs.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -387,7 +410,7 @@ public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius) } public RectArgs(Float x, Float y, Float width, Float height, Float cornerRadius, - ByteString unknownFields) { + ByteString unknownFields) { super(ADAPTER, unknownFields); this.x = x; this.y = y; @@ -488,7 +511,7 @@ public RectArgs build() { public static final class EllipseArgs extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(EllipseArgs.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -643,7 +666,7 @@ public EllipseArgs build() { public static final class ShapeStyle extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(ShapeStyle.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -701,6 +724,11 @@ public static final class ShapeStyle extends AndroidMessage { public LineCap lineCap; + private int _lineCap_value; + public LineJoin lineJoin; + private int _lineJoin_value; + public float miterLimit; public float lineDashI; @@ -919,14 +979,14 @@ public Builder lineDashIII(Float lineDashIII) { @Override public ShapeStyle build() { - return new ShapeStyle(fill, stroke, strokeWidth, lineCap, lineJoin, miterLimit, lineDashI, lineDashII, lineDashIII, super.buildUnknownFields()); + return new ShapeStyle(fill, stroke, strokeWidth, lineCap, _lineCap_value, lineJoin, _lineJoin_value, miterLimit, lineDashI, lineDashII, lineDashIII, super.buildUnknownFields()); } } public static final class RGBAColor extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(RGBAColor.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -1059,7 +1119,9 @@ public enum LineCap implements WireEnum { LineCap_ROUND(1), - LineCap_SQUARE(2); + LineCap_SQUARE(2), + + UNRECOGNIZED(-1); public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(LineCap.class); @@ -1077,7 +1139,7 @@ public static LineCap fromValue(int value) { case 0: return LineCap_BUTT; case 1: return LineCap_ROUND; case 2: return LineCap_SQUARE; - default: return null; + default: return UNRECOGNIZED; } } @@ -1092,7 +1154,9 @@ public enum LineJoin implements WireEnum { LineJoin_ROUND(1), - LineJoin_BEVEL(2); + LineJoin_BEVEL(2), + + UNRECOGNIZED(-1); public static final ProtoAdapter ADAPTER = ProtoAdapter.newEnumAdapter(LineJoin.class); @@ -1110,7 +1174,7 @@ public static LineJoin fromValue(int value) { case 0: return LineJoin_MITER; case 1: return LineJoin_ROUND; case 2: return LineJoin_BEVEL; - default: return null; + default: return UNRECOGNIZED; } } diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java index 0b7de393..99433053 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/SpriteEntity.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -13,9 +15,10 @@ import okio.ByteString; public final class SpriteEntity extends AndroidMessage { - public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(SpriteEntity.class); + public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter( + SpriteEntity.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java index fbe462f4..c4a38a2e 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java @@ -2,6 +2,8 @@ // Source file: svga.proto package com.opensource.svgaplayer.proto; +import android.os.Parcelable; + import com.squareup.wire.AndroidMessage; import com.squareup.wire.Message; import com.squareup.wire.ProtoAdapter; @@ -13,7 +15,7 @@ public final class Transform extends AndroidMessage { public static final ProtoAdapter ADAPTER = ProtoAdapter.newMessageAdapter(Transform.class); - public static final Creator CREATOR = AndroidMessage.newCreator(ADAPTER); + public static final Parcelable.Creator CREATOR = AndroidMessage.newCreator(ADAPTER); private static final long serialVersionUID = 0L; @@ -76,7 +78,7 @@ public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty) { } public Transform(Float a, Float b, Float c, Float d, Float tx, Float ty, - ByteString unknownFields) { + ByteString unknownFields) { super(ADAPTER, unknownFields); this.a = a; this.b = b; From 43c29b7e32ecfbbe84dde6bb90a9fabfb4efe751 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Wed, 12 Feb 2020 23:27:19 +0800 Subject: [PATCH 12/19] =?UTF-8?q?0.1.2=20channel=5Fid=5Ftest=20=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/library/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt b/library/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt index bfce0506..1e0c82a2 100644 --- a/library/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt +++ b/library/src/main/java/com/opensource/svgaplayer/entities/SVGAVideoShapeEntity.kt @@ -97,6 +97,7 @@ internal class SVGAVideoShapeEntity { ShapeEntity.ShapeType.RECT -> Type.rect ShapeEntity.ShapeType.ELLIPSE -> Type.ellipse ShapeEntity.ShapeType.KEEP -> Type.keep + else -> Type.shape } } } From 5b855d10b7e253da8f9e96ebba023f7345124d5b Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Wed, 12 Feb 2020 23:34:31 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20wire=20=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=20enum?= =?UTF-8?q?=20=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- library/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0a33b8d9..4e0348dd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ dependencies { task testGit() { - testExc("channel_id_test") +// testExc("channel_id_test") } def testExc(String channelId) { diff --git a/library/build.gradle b/library/build.gradle index fad62ec8..66d81bc4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -29,8 +29,8 @@ android { } dependencies { - api fileTree(include: ['*.jar'], dir: 'libs') -// compileOnly fileTree(include: ['*.jar'], dir: 'libs') +// api fileTree(include: ['*.jar'], dir: 'libs') + compileOnly fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.squareup.okio:okio:2.4.2' // implementation 'com.squareup.wire:wire-runtime:3.0.2' From 05ba2de3adc101e48320e967de65fe21b9ebcd68 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Thu, 13 Feb 2020 02:21:41 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20wire=20=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96,?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4=E5=AE=9E=E4=BE=8B=E5=8C=96?= =?UTF-8?q?=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar | Bin 109944 -> 110332 bytes .../svgaplayer/proto/AudioEntity.java | 9 +++ .../svgaplayer/proto/FrameEntity.java | 9 +++ .../opensource/svgaplayer/proto/Layout.java | 9 +++ .../svgaplayer/proto/MovieEntity.java | 9 +++ .../svgaplayer/proto/MovieParams.java | 9 +++ .../svgaplayer/proto/ShapeEntity.java | 54 ++++++++++++++++++ .../svgaplayer/proto/SpriteEntity.java | 9 +++ .../svgaplayer/proto/Transform.java | 9 +++ 9 files changed, 117 insertions(+) diff --git a/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar b/library/libs/wire-runtime-jvm-3.1.0-SNAPSHOT.jar index 95489e246b4a57dd95751832d4f47c9f166d41f9..03527d00fb41bc34a6ce3c36ba83604f8facde5a 100644 GIT binary patch delta 16104 zcmZ9z1ymec(=|MUyA#|sxVyW%y9P;sV8NN-?u5bJ-QC?iKyV38fB+#lKOy&d?|1)M ztTlVpuHIE$r~91Ybl1%?%)=TCvWh$;6aoMM2M6HCP>e&ShWrIkjN_7n3`SOr3m|*_ zDx!P+nrHs=RR;r1f_w#8P+HKh;0B)JFCa!efP1yT<37Ut1thFcuRxGuANUGrsLr4v zUqU6|(et3Z=&76>(K`}D0{}?~38IO(;Mg=EeBEbyUTBmTCzZ(q3BLqv0HB&R0X?1! zERYVw09EM0>u6{v2^D<`rx8GqRLLtYmK3cSz?C$ID0T!=env>G_)L@dMpLIMww$Pr zIm3mkE_Tw4<}lfXD>^vp7A~?p_`Fz~8L6!UE!LShfv1Uu}5!7u>TNxESA04!#XUCH|y*;Cn|4CgZ z0*NCe4|3}uJ1yDfthI4)p#*W6!w?nO_PBLr;S+b2VOOIEes=iY%ts562>tG3{og?- z!L}4R2PQwRJAL#(W{e4`f_v1k3G5h0bL0y0&e9Qg8q7+bi@KWZfIttCV}U>YRK{63|0Il+WtJH_$Gd`O)7E`t>0T4*rlgn)j} zo10@AH3A-V)h4$eZxNMmOV31BD+JJL$doR%B#&gmA+!B_LyhysH6nV=xJ5FDSA$$+ zv|7?YK5{URpuQt#M#jvFmJOl5JScH(9w=`K5H5#`GQI-uV`8ga*U0-U`nMq5mH?j-`LU40jiZ#0_q8|{@|dRau6!h zveIr2L!9+$e^=+jxaltjB1%b)1hc{mLcPP#Aq-YbGdp{6IapmB9aLHeIh1Kt+HW8| zkIDgcWPKBL7`DLEG0P_^@f<&;fG!1W-ab!#Yl)nJV6t)uYg>;o725RzBHXXJkEv-| zeH`R^E-bA1DimM#=I|l*#H>qr#mSBzZLsPk#9BK)l^$v;WPh$ce>b5nP;BkQve7US2(GN_zEocv(*}UlM{kS|!g1A^2Stly) zm(eSz32KZ9SLIOcU>fet!(@2$+RipV9;G{kg;!jC6oy+FbuoI5UFZVsa8fwl2v(C~ zH%oF8p*~cCO1GV-JJfTuY%gcIY(t==SdtIq0`Gpi4T(Pv#z9NK8txTPA6bCt6iuyX zT^X4In^=is2G-^$IJgPAY~bye;mvh%qJuGyv5(M~KB+RRt9q5MV#(ebkp(!R{s3B7 zTS!Dqip=7riOgzGe}TBvM8J+y9v0}Y@7`d0jQ6d9O7p;AHCM~&F#E;i|D2K_9xg^M zh;==SvOJ`bo_a|8+GA&N{j6_)@;xIbZGH}AQ&PW93rQ!9VWX}%Yho*B=hSIPss;aOo-kE}=~oHj4& zF>ij(G~`t___Qb_`Gcv6t}1#ZoF=C$6}t67vO_&|`j%Rw1lJ;?T`8&Y6=Ec}AJ#l}!s-hgROlDodk| ziwORuWG8_*LU|8q3R*nFEN#B!*-qQ8F-^E)uxCz(Z~CI{p>`mCCxiQa=wn8U6S1TF z>}961N%OFZG$#3IWALwjU2=}m$c;i0_rv=ues;n4d!|P*k`lD&k_L*)LMc{1eoN%U z%SuTyu|?+0Nbso9XLp~GOp_p#KEXA}?4_qYK}BEa1U)?e zxO)qYI4J|IgR?`D_V4*wcn^ZRm^>H(H_t5+L5(-e7O)N#D`vju^=hvLs6 zPuy8TMbF}XDdJb3qb4W`4&rlW)vV9v7`9amp#2LuM^!J6NTE~FABby|7uG+7%DN3?qr zgX!!2A3$a+RCo+E>TM+@X;Od`-+Ro+NU4n&=vbi>X{{BuUFS zip#XD4XDWtD2|ri>hv>>%qJax)Tww+uybL18#yXAT;Ml_(^jrw9f%T|q5akcy#mL) zY``Zv$@=IFXP5md)Ol+InY<-#5g~dp2Uk8v0u3|^1I>Hf6C(hz@|!&3r-SUqB2@1n z_+tW?dGDROyl9)~buJ-`y5A8d@acchq4s4Dke^=Z#wY}rrn^G0y=qJ>224yCTu251-2`x(%#wpo@n{eX)y{i z41MVFvpKGpRA?=lXs1v290C4rd3=UX5l!z-=1wyBvE?POx|M?-S1tN*S@dmW;&((A zb^GlDKp1Wg4g6jbPm7dEQ@~s2K}v-#n;0AXh$wmNsET(laSX4@J+_drjbS_~WcR>E z7Vi@jgZt@s)Q9ieq#ifCLEHI=uuqDhz-Sw2ipUX#uV@acEmUH-b;u<3nCKBzVlMX< z;C?U>?}9H9@_e0-_r>&ABmI&Ieh=D5OZAyyLb*xz4_exc)va7HM33I>8ShB!zM4lz z_{tuB&*}a!^_}bsB(zY-RAb6+Q^#bmsn!qOyl5Exj5-gzH#Y{Q?=veVqncpPKmu90 zp8Fn9OSY9`&zrhnMa{-HWp$A?d{%}%dn4jzOX?l2m3##9{>V%X?})pj;6sYEDppEM ze~8GsZIqd`5a&xs<1WK-OA<*p5>H<$%-#>sM}Q(P?x+)C#QI=5 z9EVSbQ9D9-0q>WOI-#Vke;0^AC2K$1r23WDiG|tu48tTNO-Lg@DLm(E8i-{xb^koE z)N;v&_!C5(x=mJ=qE}oiKzu*vSQH2DO=$#Rf8<^9@bo(b`Qu{@I!wScUsCocF4C z<7XUujS{HAmKTeOawl8FZJ^$O85J`QCa2yvcn%2qeX12cF3rjjZXp)62MIIoH2#?f zX#sWLm1&Bz#(gEPg%<1-2ZPrum#o`K?B&Z->|D64eewbbs${KI4UGD$XJ*}yp8z?|W4f@nTb zzPIQ~_3yrI{IIxLGI6w6@C({UX2im)z)w3r2!rI}f|77UwysB<82-!`pQ3>>+=$$2 zlTj^NHufx80gZ9T?YsgPz!8C90)NQxM%Gb5l7pXM=E9jgRlXpbm0+e_yB4h?IUFux zDldrl4cLnLdf&hx&KdOc;$%RR7suFy@w6ur?xUrS_ZDS^O@pz9Yq-j$fTI17s?(Bj z+>G+Wn3T{rUrFb+dKjw6RZ)XGw2ELjt)d@l?@qTdcN5?4;*9vA&hV9%W@gKK`RFUn zUYq~ufj{C?HuZ#LNd?AHn1EiQa=~Y;FX@eBKBtQj2a@ zPbezJCt=v^y$9BzpyBxW|H|Gplhp=z;dEc+VkNX!vcJV*w6UnAiuRx27>lTR(-J8A z_`5oxdma9W=uAbvN^pr&bn(}nJ(>Xr->mM99LgIFVSG{NYK$KYnR}bgECX{W+(d~2 zxB25-fOiz6Ts=!5rY{fWP@K*^$BHg8VlH|QfBx_vh8HGq>(bJxvL9_*p?!M3DdIYA z8N&bASieVaiB`L<@(i|Lk z+2MM=buK0v*XZLinjlPK_@>=5N*HB-Pp6zc?vtLG&lb}C7=P}8c_sD6{@(MRPTDn3 z2bp!qd`kFu8U#l1_Tu64La1MaRlNItIUikHun` z*NuY`5FcZwUNpHtnzkgTu?cqk4u|lo2kmYP1ObaC#@QNpJzK!ij)LzG3}(g5VHM!s zY{8qV;6O4Z%04suMf34UI2iNcZPcvQ$JVZV)=#sp2EkTjnFa1iGr!uu*ozT6!A(uf zMmqFG6Xn+;59B}|3$hGe{uG4KB4n8tI8h@bs(|EJgG}G=s}~mM+A;fi7C<$Ey)-gH z461>+XJFU%_BXuvj(}@7o08`m-qCwLPOsDESs(&Yp$HF}eCt>a z=^izGbGz{Kp`+bngSVwh-l zN-nls?dk`jVdVr^jA4WLZ2SaLM~s#a>7YHB_3c|txROaDFV{sV=5^OZtVl-ez&rIo zzG1Dcn%;KAQ_&#(;%wM0T;kr#YDwDb>ftikQPhgV??Y5-zF!Dgd^`&d=Z50HJDr=` zq9}Z{JG(b{4&>oVFo-e7#*%&$&9_85sU?yhOLOBdr3_H)tR8pvUnJZo?YSdtg95!_ zC>hpK+jCMlm$a-bg{EnNW{@Ao+Mwfg>jTC#w`2ydvfz$kw;iaS-{SIk5mveoj`U#G z<2`CggrNxr&7E^F9OLOcBvfBeB+(lwLbn6m1&6=lOq;I5DR62GrjhD$8_Et;s|gQ^ zRsWLT#qBqdbs3L8z@^lSPo&kB4Fl~_QPIWUzzA)Ovowi+@3r64S9(_$M`36ZoYDJ;}V$AcizGI=%*!N+PN-gZmPvY7cnwaern0aYN3Vp?TxSIC+ z8A-qai_>rsufDXMUG$abDl=S$JB|VUMaKt73+m zOuf^FJzzS&LNg)EQBrWHFSSsU} zYV7r(1Ix%xh?y<~jw-X?i<_0kApt@#eCxT#X!{QN+z0f-Xs43TqE{q6_p%rzQ*S+^ z*9TAdwWLV=5Ie93ZTrF@!Y}Nse@(-58sfuWnQQWs%t{xw)FOLVg7y{0tajQoa zAf8)=9l~w&Nf*FG538+HTS=>N!fh}PXnvT2GZ}2^yPElwnV3y;>(egXww%h>uB*+t zZg&B(NN_->+{oooHhMf(xApGk`RBSwS(C4gkLzRVm#AOs-BQdTkOldFKPt)`MP=>PIHj?un!*WGTe?Hk|vEZVvfCICZ%0Zr$?&h zLX}`$I^~P_GW_`%(E;^hMW2;4`8W?WO6KHv-TjmhT}!{()F?4!tn%$1e*apcQbeBN z&Byq)M6BqRFQZ7kL0-xEdua>bmm?0Ql_HnS0`>!&X^%7|)PvPZ=Q1UnL#)NacNv-) zG%j~4MKLaS8bxldd^yeqlcev&_A$GF|L!;c*-S2%8vMIa?5fE97gVXoLcQ(_lX+w* zmSO<_rp(|TAn@`-1_O`yvQ3PY=cF8)FypKQ(k2+fex5+E z0ZV>nAPD%FPRC_W$pVMD`04ZZxf6gQ9Uno}<~{Q)`5Uda(NhF|#g%5I)T>9|uGv<* z*_gu+e2huiV&$~-xoh>6D~H3PRyVB(%2?8&Ltf|~C*vJ%ryb5&b)eg+GzTD0#3Jt9 z+&d;yVRaRThFIm*X$H<55MHz`UU+7+9t$C35w+%uR_)P8sS(Uv^ZD^zY;ksE^hmP$ z(sFuuL)O|bdigTjW%Mm`xO_%UM~&d0OD-uU8rmPcNQEA=$zgGgh!n0Dm-c6nC#hif zq+o(!q)!ZNXNurz&)&efC%v_(?g2ulBcfVEg%q*NeoYHjIGO8EPpY1Oe1 zFEY_UN1fo$6!|d`3?QD=%;begPEPimC3;yZ=55-b!R&X|lV}0VgS(Ank~?!^}#;iYZm=y=zNbrvukyHo~7Pzw?dhFB0vCvNF9klH0d z7tkSFy*)pVMYlm;vq>|%KSH*$^iJPrA2OIl<`kS%sH*RWUus}GhLJazd>@Z&EPpHC zDpzR{>gjpP<0f4&%NGi-FzSw>j+BA@;CWpg&ZvDe7%iV%iRXR~7~MA1pB%;=!VbP8 z;6EiDB0gXY9_~cR1FRPqgf;Tbc#!FrGLVIoV!bPN*5Uw}vE6ikZCv#WmA`)~5b3AE zwSP7ykj8Fa!pim9Oq2qT`^VvRrD$D7ugD2El;L9|*3oG9bK)&}gkhCXPN>9L@nA$~ zFa9J=irs67c_37|@c5c7>sBt+Qw8CX8#=&NYp{$EQ1AQ^zO3G9oZJSD59~z5t7iSJ zJ{%##lY|w-Z`do5`Thn;JZ)Lc}G^*A(mJiqaXXFYg*LUB`<}@z_^5!v1dy!F3wDh)RiP@tPM)H)hPXm7rYdS_lul2 zb&ouEY}JuNPqoVW4QJfBF5Z;mLdaP8z81qJ%+v>T&=h<1drG$|*-|l65hes4&RusrZ!u@|uHK$iWg$`+o7 zrZ8M_f3Q7#Gp#U2zmKrvdzm_7Y&FVuF4y2f!vRhD0O; z#2ExdQnSBBPumz|QGZpM--D@sE8TWVMil!Ku7m8bsZ_aXzbKFPq+WO}6#rU?O2x~y z&qw^=8D)D%7-N3qqjB&xMa(`-&I=tQlWQ(qs7l8k_44ztI=uyzbbraqP#O!PI!>`9 z2kFGUA%WHW8Y9S+8XW!Bol|l|CH!F9mc#s6wM}s(NAWx!a4UWy=!2De7z?jP9&nM zs*6btN5})`r(OC9n0%H$)XgD}p1i{ks*hTzHt4b>6str&h-9OG^AOp<8!}Ibq5Z(B zYHee+*S++ZW1}W)tmI?74A=SmvHhDz|3OgM`C8F&E~OZn|johd35culWr-(>Bre4U?8l#*lGMbk`QN=X3l)Na!8; zT9%L$zO2Mr3}P}BMI**8p^(xt*ADewjR*`i`?gKK0ehE%(;Hgg%Rkvb^3!SlZcLE> zde`;d>Umd=w8c94xG-^OxS_54gF=hO|sJ!%zC%((g;S`pG82@r|w%U!@?8k(31QeCwgL~MCvYXYzf*^$zOLSJeP*v+a zXwOre>;@cqJr;4UxJ`e0R(7*Id32m`1Jfz1?)@Hpe6ZFl~_B5CAgKF5zzm$^#572yB2(9V{ia~3XX(MFJX|o#@AoMR&4AJ z@7P4%Kp@pZ!NvPPieh9_lgWrdh(WN@ZnNO^c3V)7r&Sj>Sg$pFwbv@wEd8=nT0x4U zq8C*^VC(kYthO@1;q;<;}r3bT$2 zN~ZJK%0%#S%i`WXJFZv)5rp2*L*x_-V_d+{b6o}H`VoW5j2AoBo?4k4nE5!&3LnSx z-s?$4bG!vNG%YkPE>;#-kOUNGcQT`$Tu5W|)6Y&DVZclG?e&W_=O)=KELq^|rWlYt z8zl(OJ@n@O8~~W>o1#ORrY>ScyJ(+WNjFKh`^6eGTk9xw}w>!yg;UJJ}Io zPGJM3%Rzgma~*C06utZ50_Offv9*P|5ITrLQpVN>^W9p5WZEi6lmJtz++50DWSMT% zI~LtMeh5Bw*VHIn0{dJW&@j&Fgv{Y&+{Afs`~7RiOsWH!#`6d2u~_7#bI|Kg;7knHt#M)4Epdye z>xjIQ=E4>9KvHLBqj=w{REZKA`^u_*okf&d+J91qtQgPtw1t8Yv;H(UkjRK!=GVxY zT}>xTh0hs4;4-Gcy0>0bm-WWhbp~HA;)@ruNWsbAYW*bHx17&oRP{#9A3isdNw+nv zDE_Dgy|<>&h=ZDn7IA@Xl?+lm?A|X#X`PqkI_fvN4g!4&>h%)0tytC!Y1ycj$~7N$zJqiUib@Lw#n# zjq%{~_PhV;6191}w*6xWziP${jrt1!;;kY1G~5k*-|>Mb4pH`Rwh3Zsat7M%vx~dz zRKy{!`I=8_Ijh{h3j0OQn}_8O)UCQ2o@r?(`S76ZGm-hv1@JZWz7 zItJP%NC+8O54t5qn?>UM9$^mx*lxsa@(dALq)2)Q3Gf#kJ}gf+tHp;or)=f9#3Y;+ z2AqeBkFDU&-g|oWp);5mR^8|TnBo0M#5LrQC&Oaz9X|}#iqN7N<_NG}{{-@V&%Hmy zWN`&?x;;U_3PRC2I8+JG4`^s5Q_sg(hg-?pdnThGcKMzMNG*DLNl~)GlU%>Ot3NnX zm6(UV^;78#Am*0BYe|638$Y4i-e6)aF;f%>xnmF{S|9op#re7sVS!-%)gLY=N-YK>7EdW<-7*g%Ir`(=+v zj(&?_;E%FxB7p8Rhev@RNOO%GWC4A}m+!bnhF498ajHt4-bx4G%RH@ZDQg_i1A7HR zelqIP{?^akPkmbG(2FYW+}pFdmZ(!>fn=_fKV|ddV&y7V=7FeYT3_3sVf*>{P zRNKA6t%XZoqpd0UWP#X@&~KOccCca!!@2d_C>Ivhhas4tJbsH`D3p8r__3zV-`}ww)}hG-^~{|F%kRr7B+YumTJ<&Ha7E(T@Zd})s(xQK?zn&R z!0Rq2*N*SnX~8rX7y%0x*z_Lp>I&u&qhZxMljm4Al1?+?#w)<+?GQaeTI#y0z;|5% z{hNLBlj_ReTqlW=%_lL;P}k8htS>_W&_`~W5hm)S*iL@rYMGEWuD4OE9^Z<;?ZR{|e%v?TwT9k7(Y{^j{b_}V$KejdK@d_=VJ27s zVsQlDdE)mT5mJVGdTTZ_&vRlyHY-r&v&99_Q${qKU*#{M$?VuV$~>Kl&~8b@3Uao2 zpc`*)2etDMSAH2QiI8Z&2WgUSA{w@9>}sj)%J~g9RI^3u1XmF0<=>pzr@-2z6e9d~ zUD2#bE{9KmD{T%vHh5sF1oK^MX`Dv}&c2DQADSrBkQ&1&GEA_h_9dqN1=hc+9zi6O zz|m^+h$7QRbn;B$^9iOCnEzDn`to2L5>vw7hC}d|zcc)nn&pM(I*2s45x&kWAIP9t zr}tQ`&^JLuSASXX*%u6IYhuP-`6s*V6e@ z)kc@RWS!L8w#0@Bd4k?xbWtLsb?VYf*;blw%X&W-d`BvZ*czR#c?dby{j!OEo+`rB zrn!+f>;TThNGKJf8$k*gL5e%0Una4mt0=gCe}pqlDJWmpXv(p%qnE~?80k*>6m;~+v_7N_Y$+DlKBb#?tr2c@yonpOz!Tn9 z2&~$28zVL#5DsQ5mx|7zblrnY@ykil6|t5 zhV)@IG6=A@_xW08qnReU`&)%~ntS=mE*c{i=R_aR0)anHo?Sb|X^kMhfUT6qB+Q2u zWQ#<6RueCt*@Is{a0i|Vn2g)I#vCZap#21gog>}Nqcs&1^rdXoqkUP%u6f8L4rbak zQ!S5VCO>sJ+1r33g57S#b*wLOrJ)OVVzOrK@wJ{PZ%<*TYh2%(#ow4V1#FquwOR&v zi=Lmd*;%x2b7nTZbs~M)%FYjb2&p-!++wFifc=e1Um1eDc%!bCcAMual$D+*F7K4t zs2h7uE4;U@e7Vz??(4%7Nr)eDSKfR#G2)bBI7%Dcd;<>>@|@Jo)DZJlc;|&+l&5Xr zr9XeX@|9Q=VrOsXqpWwRGSU=z@G+2jHeTx9IxAjJdQiAC|FBq_h#(|Ok69jbYVz0k z$Abu!ikfd_!6dO(sQj5p6i$WF^Nr7`fC#CD`8*EFesrA;7PI7>-mAO&tYM@2k)9J$ za6oCkhOGg}%kloGf}TJ>RWEIsK)dypw=V(&&4emvlt)KMmB7b^=NQYfjECISZR|S3 z`h>4;$ETcvQ6j|~9Y=xw6if-bp|Nj8e~iDp`@mq8Z<+^6VYVi==OySB>{v%LiSYhO z1Tv(PiLCtM;9mHl;)%9&x){eUDN_(nqTeYl+%gU1N!4P}{guo_zqNFU&1bXw9oRB; zfb%2iZPLR*H**<4IONt|-d34h+*zy8b0R*XFDxXi*-C+cC)QX^;2Y~l(ufF}JsoF; zGF?M+`m3pBQyg%3^Z(lESOY zi>b&4s#`HUY}kyS6ie{=d7iyO4KsJUPrwni26hQV^;V*hom)z zJBt$^ADcS=DTo^sCb76_3{Bn5Fk>)e=3{0pEG zwyaw1oEWwPq&>pA=!;0YEK6^v81;5G+HS!Q^f+CUAd^zM53;|*Ruxz@X0Z=1CHvyE zKn@mQRgrFrM_H-o6dS$ekx@6YN5{qyJce0?+ic5t&Y){3jdv>CE=vLVWSPq;Z*v<& zv3C;mAjqDVJ2PK?HMeP7V)8PYW^vR0N^MVz!qjk=c4yf@RNI&H&LHM0p+{f*xy?HC zL5?D$?Jd@Y^!)nhKB=~TGc);Z>^SE)caZMk#=_!SGxHJZNEfOKwyiCJKu(m?_wMlI z=U{F`P^Q!OEE0?}<8Ci(&7Bc z@J}toEX3oSlWlVjGO3mfUJsgsc3|plApUjmNUXKcGop5rs6w4Jmx7X_e6;CYEy(+T zJNeSA){Hz?MpkJCo{lk0b@u`fc7$uECK5Z@VMeyplus517{e9wgR;VmPe%Sbe8Vq5 zMM;fkIc|OBCDONh+2ezv63*)s;`fou-)l$AV`lc~wXaZpJ*bB(L*vdyv8mY2=LIiW zv1Qi#U7^2i6n+qjAh9SR$#1b(90ui@ik8pdbD*DgAm8kwm~nK&|s3Jvgk1{Ebh>sL!f4j&W7a{^r3+6>Q>xrj+)JHNE z?aFmUnBXIGs2(oDlzJB!%MybcDP3BEuIHlUaP$+k7#~3HjkyI=^Hr5s{5|o2%ADP` z`l0y?gKDh8%I$cyf;}JU+2UL3)^93xyOMA_08vYb)3f(Pien!X7n~wb`DBQieQs#i zypr{lXM8e>4xT1=u1qFr%&*`)iTfD$*_*M34ro779z$hxPvGSxJX(N`O%8>qz|5N% zd44-r1HiircHT?YYkF2sBWu?F{Kq@9Z^Lb;1?d7SqIBRC^Q#K45)rP40{pfi-{8hk zt%xw6Dk*yUU)HR5s=}OzK6$dBSX*qLeP@m>td7-`%ekGaIxCoiFZgZasn$8AyOEhb?<_vlqqAKgIBE%1)|>JZ+^4rg&aIe6_!u|Hw}gy9`C6VS3o~ang0tVb z+|NH{N)!An+qonhGX3BxEn;<>8AETa7VB>+1x?<0tIZ)>s zu9Q6?c`78bOgT~nvYsRz!iBd+n{PMYe#2giKiO7an^klx6v_!hqa%3Mb!n1;QRS5PU;fs-lb7|C$6X5R^=yb1ChXq$t9I7WBOJl%?`N1n&o zgD!GuC;aDC^iz+t;5AYjZ&wXrf0uM^9ho`}gH3Y15 z0@*m`p#S-t0IOgiFFkVLt~vsOZLC#046OoGPXkqp!CO(zLCp#(RwK2nnkC_tzBt7G91Z})^p3Tr2nV6>Wt?b#5ENjNuN@@O#b0Y<&cbpmD#>-u(0 z%AAo68PqRq(lh_6#;i?yQH#g`n1ES3$bAwoy1@ z4OI^72ep4Lif?SSG^J|`fvyASS`f{TED0R7-uBx@V#7slNlkN!mGax5CHzFvzab7? zkMnI`NH6rmJ8Z)s7DrC8KF;Cbb>yLEVx1Ar>a1fE$wkQHvw>lP1HeV*N?f9MsC~~F zh^rOWfh3PVJK^`7xeJZ2+syu9z?FcfaW1O314)kdp}i+^qJv4+dUw0SjL-A}WV#~r zB?e#r@ge4_Eb0aJ6`I?ODay36JB?4c*Wui%bj-!qtLECTU|Li*g}vWB`0Qkw1Rqq& z7eaKHdWPY{73zL?r1qZe!z~--8FVI`fqLiYbUJjJAj_WkKq4RTFW=FvWOYXrhYN?U zD-3H)l89BMjak11>D=@LGVjNnui?fiW<01~@sVywbi$_2SQ8r$)^hRhUSfMQ_vRo| ziK2oc&&1JO#G~EO+PTo7s&)~ccuoYVoWJL?dWU&Ou=|WK%z>98OqB~Lh-9O^L0c^5 zTNLjqbrrS;oNs$@N$eSeR(zrCSMYbH5|eb4&l6aqd&ug0@s)^G4fa%kBy6H*)bilL zkagC>6|LiT_$_C8q8idOj9s1|a`|(G*60HtOh+Jm zlnW!|Ze{f?J*t_Em;U=Ts>&G@J%d4DLs>JU@KgP$X1wti;iJ!Po-R=KUvKpZ;-4^) z6vo-}@}E)V?}j{lUMA*+3Q*s=;Q(W0sfT94S55i%r3RWf2F(^mt~RcUuC4`T&5kne zuJIQe#(oOEJ!&aJLV3&C>eCOus}VQ4BH2=JV2{p19`bHhV$yCbpWumai@@l|5A093 zmKud~A2N(*-sWGH@pY8UZMeS6U~_dk)F`-Q{vPw`&|7cc%7u8^!%t=sn-65LFP8DC zZ2ggMtr*jYf^YYjL%OKWHe1{NtsUhetZbw;s~ zg8dq>>#7{~71%#WzREW>0)e!z={0S^0&V}=l#qe;e^D0(kl-)7h6^nCYYQR<*8W9& zl)&-72%ZkO{1@#p11opnuU zVL*-7LN!@M06~9khmkHb_!7S6_lj_m0rO^3Q*-0D5nDT zUO{;((C`%?rM*ypq8q0HrCu$?X+Uk{|8)C-k<$MWGE4^&KtxF;sOk_We3QZe(`UY% z#-9XR{t#MF|8Bol}YQSSUoZ+KxRAi1D{HR4GV&5MFVM0VNJnH{%6v3pq zFAmg$e;tje8UOADeQ#(L7aapHuguyX8MI- z`8#-jBmfWU+!jy(KEFor@0-W-46}|@SkH75Hdns!_HvmBSAMe!7 z7jIJVTIoMUIm~+r#&!K_M1upugPHSzxUc6cm;b`-KK{$Z<^x~n1#tNvh7l5+Qx3#R z!UJN1Pk}&`q=J7g9MpmrRtNr-1&b5_Sza^p;ERYQda3dCOO5|~@eQE-pDRANvjF(! z)xR3meP{f|-vkK&;P}rOaAEzQ{~IuI;Xm2(7QRH)!2e%PlbS6bF%xC(4nZg$a{?A~vM2ak7fn$naZZ<>Ke|cgS zAPRW+r4Fx7f~4pyDu12&xn7;XA31>(|0Whz{Gx9q@P8B@n1TN#v$f)X5&T`3q0=<~L&Ja<|9AAsAG+H9Uz)rWNd8)M zWD9Rv^p{&Z?xpAy|0%k=%fIeEr9j+Q_kY)d|Nl%d>iOypepw!Vxw4lWrNjPGUS&YMSCwXZS|TC{06+y20C-tr|L>FU7ZU!* z6&E~S_D_kn{s^o`{fD)k*FY|YUSg(WFc-Fd6G411ojlJk=K6ge=TC z*zp7liqT*h8NeZ%A*F+PS3#DX%H{8^&ZbvmL&*~usL9+YFyg;-I7C;!*D^b@DC5I_hOu5eTQ9yD z)L<+9CiIT?OPyH2nogLN0raizIpsx)2W(z)ARRhk$y)KCyEG7@x5fY;Hk7H^}#8Cd& zVk}-Snmc$8S8tD@&M?e|4rJEO# z=eovFO?y9U9tzM{k<_y#>o& z2chAKyjGb-ul;P($T_5d!sBhT0XwGTY7p$Kzg-)yC#r|<4pKJY z&ODf}WKR6J1OX36%%XxC`(UM;74Lw(iGhY|I+@5Cm}g&uUm!?J`U@lq2?O;Dqt>Jv(C%cCb{_hiUP2OJY?~XP=#Q z%Uxw7pa*O^1hkRD=dkc!$XTh0+ZfX$EuAJUMlRkN%PgsaoG}!MiBx$jdon-kjdW_LV~bO}ueyaL&}Q+_ z$ZSS%_k{8Hnq;6cqK8%BC+?-Ev-ayIi0!fU0MoEB%kr$zg1TcoSy)>m?Sr9p$%4cK zST|8^|T%vP;?-CvAuJm0|0wJ#>T$7#Z4J7d4*QD=09T<4~ zk77fDf`9a0ig>w^6iAn;(x+cG?CKg+D_7=bIj|)gS}L+tr!400v9jB=`q#4a5yU`A z0%;qrxA#VpEV0Vi!F=R$DLKZ2zF~mRE9Bi^k`?0i2k$gOUTZ~k3->n&MUm)#qm~=0 zTf@`wu3*5XMUd`WaDIQUifgnmV7vgU#c5R&g=L-A7mB}jok6Kp2zg(5ZHFQ##|#Tf zI5&`B#rTFyI!8Sgv(^=vdStSbSaaiX05mf`)>Kv}fFHUY^IkNG{wB{;L3v4$;vH>p z*Ha#A`eZP|4=%H)j2v;2syrlF%pjH^wl2B$d75-zXFw}U25}tD%&cf0eE4GPdxF=9 zSqKexrc_-rR8NQqW-j6v^isoIkEqYT1(RIR)6>_3%W6OsER^HYM=C6F@Kx<9Y$8$T&IfW>GMJA5L%WH* zWSA)~*XirM{^NIX;ew6y69aZ`RYMAj58*rm3k4O4U5md(2-IeclPm&_U6Fn7-rNm^(m&+u37N!nBVK- z+Se}g1}UO)1kch0Ey_LC+Y*}CGzd_^`bLpubpWj~g+Cul!R8jc1Dt;vO8mG5Ruer! zb^7~eI%0d3J$Up}|At7DfsaCa_v;RkQN*MvcB*V{ExLC@R1<2_=?;Y{$(TVS!YgRgWhC8YEYznn-P8CBK1yZMErn_Uy z@yE5bJm-b>Ck0JfboBIJd65#}JLPct0m-!WRx$0^Y~XYo;LNe0+vuD?d4p+>j{`GU ze4mvbn*#i8S~My&LW7jik;74^!;={@&g>={av3FKhxab2FDVj5a& zZADh9!$X<&>!{rZoMNg4%>Edx9{D{R^NB67vbaGLT$e?*KaF|hnt(H!^`*lTx~VDh zbRGyXoZyzx#(2#w!D^MzE*I)yxwRujxulE{YDp%CY8K(ZjgoV`x&!MFVQ@u%l}md<3$5Sn=U08pQIiH`cJ(4~gFXS=i48PaAqK!X=G^ zRf9n<^~mX@MJNqog&g$6x#1#~Ul&emHk;#PYl&}JsL2EI=kQ)3(-3$ZlT_cPE>jCI z6$~|8>$YAj!ku^C{89Rf=on~vn|p7|P3+_nnI0lxHD5lBN(e;dhY5X}h5P1uQMo+@ z$Rg;9?gn_Ez0-NH$|7ZATlFb!0WqVic|;=IYUjCC^F(_~9{V|IBv--=4z?2bYURq6 zs_=}F4{bn6lvbXHZ6(KQgV0vKPQ=n1WKdepU?3*6@VlhTXQ<+94aj z)5yvc9i_!Eo(JY34A^}>O2yE5@7buGNjkV)gN=|g#pOAzD8bNmdETbmm2h8|U$Gop z_1n8CHi~fVM=jQpfT^@9F&9?!b=7^?N{Xkt3r00pGvOJpr+Mm`Wx0L5VaGe{Xu=yM zw^%~;rR-xjPdgiJzm;R#1M>y@LpO%H1vAd6VaRG#w-n&_BR$Wyi?6qIWyJ%GBPlNW zlS>wvTtwIh{WY4Y1(%r?yG%u4xAfkPUa zq|)gWR z3(~3GFK3_T#HhCK2<&BW<2qQ?2)IPDp*q|vahc&&V#qpS7(RM9dcK~7LZ9vX8h5Fl zZAF#1T&!nuoyGG_d&V|a5*xK@22?I`lt_4R*_hUExPtL;q`n1&px`@!v@)p7K(=~ zT1XY%?nsA0k{sG31f};_tcGQ#0{NvHQdi7lmV8)%{A86;dTc3#A@;uAR1W(7UAE(0 zU@$H<$ReYohi@s{=`vwpw-N^pt_mj+6g?Ax{8X4+3}=x@^m0$hH6!Z>N$1T_ODuJb=vl1J^(NJZ-=3N`G&ddM z>E0W;jGfe0>33x+%j&$c?H9^6QZf*yz$%sHPYJiNGn=@hzVLo&@*;6HbCL?^a=ETo zRMQ+mc~Gz#5TfM+KZciE9XnYh3o6RxKj%?q$~O&Y)TG*b;qK-6v(Eehqlf#sCUWKp z((yiB5X^VAtG@Fll?)yb^y79IxeHlVtR+Yb|ZoFi%{*<5!$!OdiHq2ivK3nX%K{BJbUkU2rGYaV2MS zmCG?ZNDtP3LUr$eAXoJM&Y>3Enhr!%=GJvrx0CXZEr8HV0c?`LgKEKL;ey!QLjdz} z{QxGt4aOVcwRG?aHjL=3L_k_QdH7fU^)9U4;LhPXiq#nZwQcp?L!#@6JawCa?AcKu zi~4!A=3IN>``f}v6X~GwuK81D_spE(((k06-4rJ4G@ZsPLQ&41cjV@1nwYOaNK*91uxVwjPU(si;&0&?$287gQD|du zbez@A!Fc*{xL}rkE`|<4%dbM&oSAvmEwanx-(p##N0;WsOca- z+v$zNG9k%sVX^vh4C`m{+#%KLV)f!fX4{4zIPcWDm4wkLOs_%32XoNUwfzKFn%MkO zhZe&JSJpgc;c9KZrR6;3y>^Ca`X@w%KprV=U9Eu-Lkg3AVbed6UVo^73S?AZ@{Bu47^NnT+bZVOCcQ^@FisTWZ6%)%}} zs_NPFs*$r$oJGnnLBm`IB1prMLH-nnUsD39hE?T=F8hORM51oMl!@Q##ZE=vuSSXZ zAqs93+Z>Sd$!AYDUc0o#2*C_iA3{&&1Pe~MmZs%>_aBOP zt{R#7w#E`!DI9s}_i|}e6=+jjifs_>Pl~%S?Qu>&Wd=qFp5Mc=%?;HnGzZp#0o6>w(fQ*er7he3Ffvt2$W9zJYTiU$W-t!F7u^s5%!440NOW8I z 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 diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java index b6178869..1d4f0fb2 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/AudioEntity.java @@ -80,6 +80,8 @@ public final class AudioEntity extends AndroidMessage shapes; + private boolean __isDefaultInstance; + public FrameEntity(Float alpha, Layout layout, Transform transform, String clipPath, List shapes) { this(alpha, layout, transform, clipPath, shapes, ByteString.EMPTY); @@ -92,6 +94,13 @@ public FrameEntity(Float alpha, Layout layout, Transform transform, String clipP this.shapes = Internal.immutableCopyOf("shapes", shapes); } + /** + * true--反序列化为null,给一个默认的实例;false--反序列化出来的实例 + */ + public final boolean __isDefaultInstance() { + return __isDefaultInstance; + } + @Override public Builder newBuilder() { Builder builder = new Builder(); diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java index 52a0aa68..11b8c4eb 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Layout.java @@ -55,6 +55,8 @@ public final class Layout extends AndroidMessage { ) public final Float height; + private boolean __isDefaultInstance; + public Layout(Float x, Float y, Float width, Float height) { this(x, y, width, height, ByteString.EMPTY); } @@ -67,6 +69,13 @@ public Layout(Float x, Float y, Float width, Float height, ByteString unknownFie this.height = height; } + /** + * true--反序列化为null,给一个默认的实例;false--反序列化出来的实例 + */ + public final boolean __isDefaultInstance() { + return __isDefaultInstance; + } + @Override public Builder newBuilder() { Builder builder = new Builder(); diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java index 96b3e5ea..f8c07ebd 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieEntity.java @@ -78,6 +78,8 @@ public final class MovieEntity extends AndroidMessage audios; + private boolean __isDefaultInstance; + public MovieEntity(String version, MovieParams params, Map images, List sprites, List audios) { this(version, params, images, sprites, audios, ByteString.EMPTY); @@ -93,6 +95,13 @@ public MovieEntity(String version, MovieParams params, Map i this.audios = Internal.immutableCopyOf("audios", audios); } + /** + * true--反序列化为null,给一个默认的实例;false--反序列化出来的实例 + */ + public final boolean __isDefaultInstance() { + return __isDefaultInstance; + } + @Override public Builder newBuilder() { Builder builder = new Builder(); diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java index fbabfbb7..bb851133 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/MovieParams.java @@ -68,6 +68,8 @@ public final class MovieParams extends AndroidMessage frames, String matteKey) { this(imageKey, frames, matteKey, ByteString.EMPTY); } @@ -69,6 +71,13 @@ public SpriteEntity(String imageKey, List frames, String matteKey, this.matteKey = matteKey; } + /** + * true--反序列化为null,给一个默认的实例;false--反序列化出来的实例 + */ + public final boolean __isDefaultInstance() { + return __isDefaultInstance; + } + @Override public Builder newBuilder() { Builder builder = new Builder(); diff --git a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java index c4a38a2e..dc33a713 100644 --- a/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java +++ b/library/src/main/java/com/opensource/svgaplayer/proto/Transform.java @@ -73,6 +73,8 @@ public final class Transform extends AndroidMessage Date: Thu, 13 Feb 2020 13:37:28 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9demo=20applicationid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../java/com/example/ponycui_home/svgaplayer/MainActivity.java | 1 - app/src/main/res/values/strings.xml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4e0348dd..4064a023 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { - applicationId "com.example.ponycui_home.svgaplayer" + applicationId "com.example.drumge.svgaplayer" minSdkVersion 14 targetSdkVersion 28 versionCode 1 diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java index 266d4c07..cdecbe5c 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/MainActivity.java @@ -18,7 +18,6 @@ import com.opensource.svgaplayer.proto.AudioEntity; -import java.lang.reflect.Type; import java.util.ArrayList; import ikxd.cproxy.InnerV2; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f71c17d2..ac79acdf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - SVGAPlayer + D-SVGAPlayer Hello world! Settings From ac1f02cd583e8e32b9c3d4043515238d9f0c6de1 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Thu, 13 Feb 2020 13:37:45 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9demo=20applicationid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml index 475f5534..bced8aeb 100644 --- a/library/src/main/res/values/strings.xml +++ b/library/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - SVGAPlayer + D-SVGAPlayer From c2c8018402804705feca23b7fd233350daca346b Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Thu, 13 Feb 2020 13:46:37 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=85=BC=E5=AE=B9svga=20v1.0,v2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AnimationFromAssetsActivity.java | 3 +- .../com/opensource/svgaplayer/SVGAParser.kt | 30 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java index fd76aa2b..bb556d16 100644 --- a/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java +++ b/app/src/main/java/com/example/ponycui_home/svgaplayer/AnimationFromAssetsActivity.java @@ -36,7 +36,8 @@ public void onClick(View view) { } private void loadAnimation() { - parser.decodeFromAssets("red_pocket_miss.svga", new SVGAParser.ParseCompletion() { + parser.decodeFromAssets("roomlist_ranking-2_0.svga", new SVGAParser.ParseCompletion() { + // parser.decodeFromAssets("roomlist_ranking.svga", new SVGAParser.ParseCompletion() { @Override public void onComplete(@NotNull SVGAVideoEntity videoItem) { animationView.setVideoItem(videoItem); diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt index ae217fc0..ecedccfc 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAParser.kt @@ -6,13 +6,17 @@ import android.os.Handler import android.util.Log import com.opensource.svgaplayer.proto.MovieEntity import org.json.JSONObject -import java.io.* +import java.io.BufferedInputStream +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import java.io.File +import java.io.FileInputStream +import java.io.FileOutputStream +import java.io.InputStream +import java.lang.IllegalStateException import java.net.HttpURLConnection import java.net.URL import java.security.MessageDigest -import java.util.concurrent.LinkedBlockingQueue -import java.util.concurrent.ThreadPoolExecutor -import java.util.concurrent.TimeUnit import java.util.zip.Inflater import java.util.zip.ZipInputStream @@ -218,17 +222,20 @@ class SVGAParser(private val context: Context) { private fun decodeFromCacheKey(cacheKey: String, callback: ParseCompletion?) { try { val cacheDir = File(context.cacheDir.absolutePath + "/" + cacheKey + "/") - File(cacheDir, "movie.binary").takeIf { it.isFile }?.let { binaryFile -> + val movieFile = File(cacheDir, "movie.binary") + if (movieFile.exists() && movieFile.isFile) { try { - FileInputStream(binaryFile).use { + FileInputStream(movieFile).use { this.invokeCompleteCallback( SVGAVideoEntity(MovieEntity.ADAPTER.decode(it), cacheDir), callback) } } catch (e: Exception) { cacheDir.delete() - binaryFile.delete() + movieFile.delete() decodeFromSpec(cacheDir, callback) } + } else { + decodeFromSpec(cacheDir, callback) } } catch (e: Exception) { this.invokeErrorCallback(e, callback) @@ -236,9 +243,10 @@ class SVGAParser(private val context: Context) { } private fun decodeFromSpec(cacheDir: File, callback: ParseCompletion?) { - File(cacheDir, "movie.spec").takeIf { it.isFile }?.let { jsonFile -> + val movieFile = File(cacheDir, "movie.spec") + if (movieFile.exists() && movieFile.isFile) { try { - FileInputStream(jsonFile).use { fileInputStream -> + FileInputStream(movieFile).use { fileInputStream -> ByteArrayOutputStream().use { byteArrayOutputStream -> val buffer = ByteArray(2048) while (true) { @@ -258,9 +266,11 @@ class SVGAParser(private val context: Context) { } } catch (e: Exception) { cacheDir.delete() - jsonFile.delete() + movieFile.delete() throw e } + } else { + throw IllegalStateException("movie.spec and movie.spec is all empty") } } From 78f5cacd10230576964dd8ddf5f960c299d46a32 Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Sat, 15 Feb 2020 20:33:34 +0800 Subject: [PATCH 18/19] =?UTF-8?q?svga=20=E7=82=B9=E5=87=BB=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/opensource/svgaplayer/SVGAImageView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt index 5ab57964..7506c34d 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt @@ -248,7 +248,7 @@ open class SVGAImageView : ImageView { override fun onTouchEvent(event: MotionEvent?): Boolean { event?.let { if(event.action == MotionEvent.ACTION_DOWN){ - val drawable = drawable as? SVGADrawable ?: return false + val drawable = drawable as? SVGADrawable ?: return super.onTouchEvent(event) for((key,value) in drawable.dynamicItem.mClickMap){ if (event.x >= value[0] && event.x <= value[2] && event.y >= value[1] && event.y <= value[3]) { mItemClickAreaListener?.let { From 6c179eb01ce1b77f2ff2ee358da93c675038d53d Mon Sep 17 00:00:00 2001 From: chenrenzhan Date: Thu, 27 Feb 2020 21:38:10 +0800 Subject: [PATCH 19/19] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=89=E9=9F=B3?= =?UTF-8?q?=E9=A2=91svga=E6=B2=A1=E6=9C=89=E5=9B=9E=E8=B0=83=E9=97=AE?= =?UTF-8?q?=E9=A2=98(mic=5Fup=5Fcount=5Fdown.svga)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/mic_up_count_down.svga | Bin 0 -> 125961 bytes .../AnimationFromAssetsActivity.java | 3 ++- .../opensource/svgaplayer/SVGAVideoEntity.kt | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 app/src/main/assets/mic_up_count_down.svga diff --git a/app/src/main/assets/mic_up_count_down.svga b/app/src/main/assets/mic_up_count_down.svga new file mode 100644 index 0000000000000000000000000000000000000000..e32e4fc72b0433c510eadb59274e9ba08a0bb814 GIT binary patch literal 125961 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 val item = SVGAAudioEntity(audio)