Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
ff6aac41
Kaydet (Commit)
ff6aac41
authored
Tem 04, 2014
tarafından
Tomaž Vajngerl
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
LOAndroid3: Simplify begin/endDrawing calls, remove JSON metadata
Change-Id: Ie8aadd20095eeea05110032ac026a6027771aab8
üst
81df594b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
24 additions
and
109 deletions
+24
-109
LOKitShell.java
...ental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
+1
-1
LOKitThread.java
...ntal/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
+12
-65
LOKitTileProvider.java
...OAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
+2
-2
GeckoLayerClient.java
...oid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
+6
-21
GeckoSoftwareLayerClient.java
.../java/org/mozilla/gecko/gfx/GeckoSoftwareLayerClient.java
+2
-18
Layer.java
...ntal/LOAndroid3/src/java/org/mozilla/gecko/gfx/Layer.java
+1
-0
MultiTileLayer.java
...droid3/src/java/org/mozilla/gecko/gfx/MultiTileLayer.java
+0
-2
No files found.
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -18,7 +18,7 @@ public class LOKitShell {
public
static
int
getDpi
()
{
DisplayMetrics
metrics
=
LibreOfficeMainActivity
.
mAppContext
.
getResources
().
getDisplayMetrics
();
return
(
int
)
metrics
.
density
*
20
0
;
return
(
int
)
metrics
.
density
*
16
0
;
}
public
static
ByteBuffer
allocateDirectBuffer
(
int
size
)
{
...
...
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -8,6 +8,7 @@ import android.graphics.Rect;
import
android.util.JsonWriter
;
import
android.util.Log
;
import
org.mozilla.gecko.gfx.FloatSize
;
import
org.mozilla.gecko.gfx.SubTile
;
import
org.mozilla.gecko.gfx.ViewportMetrics
;
...
...
@@ -18,8 +19,10 @@ import java.util.Random;
import
java.util.concurrent.ConcurrentLinkedQueue
;
public
class
LOKitThread
extends
Thread
{
private
static
final
String
LOGTAG
=
"GeckoThread"
;
private
static
final
String
LOGTAG
=
LOKitThread
.
class
.
getSimpleName
();
private
static
final
int
TILE_SIZE
=
256
;
private
LibreOfficeMainActivity
mApplication
;
private
TileProvider
mTileProvider
;
public
ConcurrentLinkedQueue
<
LOEvent
>
gEvents
=
new
ConcurrentLinkedQueue
<
LOEvent
>();
...
...
@@ -29,90 +32,34 @@ public class LOKitThread extends Thread {
}
private
boolean
draw
()
throws
InterruptedException
{
final
LibreOfficeMainActivity
application
=
LibreOfficeMainActivity
.
mAppContext
;
if
(
mTileProvider
==
null
)
mTileProvider
=
new
LOKitTileProvider
(
application
.
getLayerController
());
int
pageWidth
=
mTileProvider
.
getPageWidth
();
int
pageHeight
=
mTileProvider
.
getPageHeight
();
String
metadata
=
createJson
(
0
,
0
,
pageWidth
,
pageHeight
,
pageWidth
,
pageHeight
,
0
,
0
,
1.0
);
mViewportMetrics
=
new
ViewportMetrics
();
mViewportMetrics
.
setPageSize
(
new
FloatSize
(
pageWidth
,
pageHeight
));
boolean
shouldContinue
=
application
.
getLayerClient
().
beginDrawing
(
pageWidth
,
pageHeight
,
TILE_SIZE
,
TILE_SIZE
,
metadata
);
boolean
shouldContinue
=
mApplication
.
getLayerClient
().
beginDrawing
(
mViewportMetrics
);
if
(!
shouldContinue
)
{
return
false
;
}
Log
.
i
(
LOGTAG
,
"Filling tiles.."
);
for
(
SubTile
tile
:
mTileProvider
.
getTileIterator
())
{
a
pplication
.
getLayerClient
().
addTile
(
tile
);
mA
pplication
.
getLayerClient
().
addTile
(
tile
);
}
Log
.
i
(
LOGTAG
,
"End Draw"
);
application
.
getLayerClient
().
endDrawing
(
0
,
0
,
pageWidth
,
pageHeight
);
mApplication
.
getLayerClient
().
endDrawing
();
return
true
;
}
private
String
createJson
(
ViewportMetrics
viewportMetrics
)
{
return
createJson
(
(
int
)
viewportMetrics
.
getOrigin
().
x
,
(
int
)
viewportMetrics
.
getOrigin
().
y
,
(
int
)
viewportMetrics
.
getSize
().
width
,
(
int
)
viewportMetrics
.
getSize
().
height
,
(
int
)
viewportMetrics
.
getPageSize
().
width
,
(
int
)
viewportMetrics
.
getPageSize
().
height
,
(
int
)
viewportMetrics
.
getViewportOffset
().
x
,
(
int
)
viewportMetrics
.
getViewportOffset
().
y
,
viewportMetrics
.
getZoomFactor
());
}
private
String
createJson
(
int
x
,
int
y
,
int
width
,
int
height
,
int
pageWidth
,
int
pageHeight
,
int
offsetX
,
int
offsetY
,
double
zoom
)
{
try
{
StringWriter
stringWriter
=
new
StringWriter
();
JsonWriter
writer
=
new
JsonWriter
(
stringWriter
);
writer
.
beginObject
();
writer
.
name
(
"x"
).
value
(
x
);
writer
.
name
(
"y"
).
value
(
y
);
writer
.
name
(
"width"
).
value
(
width
);
writer
.
name
(
"height"
).
value
(
height
);
writer
.
name
(
"pageWidth"
).
value
(
pageWidth
);
writer
.
name
(
"pageHeight"
).
value
(
pageHeight
);
writer
.
name
(
"offsetX"
).
value
(
offsetX
);
writer
.
name
(
"offsetY"
).
value
(
offsetY
);
writer
.
name
(
"zoom"
).
value
(
zoom
);
writer
.
name
(
"backgroundColor"
).
value
(
"rgb(255,255,255)"
);
writer
.
endObject
();
writer
.
close
();
return
stringWriter
.
toString
();
}
catch
(
IOException
ex
)
{
}
return
null
;
}
private
short
convertTo16Bit
(
int
color
)
{
int
r
=
Color
.
red
(
color
)
>>
3
,
g
=
Color
.
green
(
color
)
>>
2
,
b
=
Color
.
blue
(
color
)
>>
3
;
int
c
=
((
r
<<
11
)
|
(
g
<<
5
)
|
b
);
// Swap endianness.
return
(
short
)
((
c
>>
8
)
|
((
c
&
0xff
)
<<
8
));
private
void
initialize
()
{
mApplication
=
LibreOfficeMainActivity
.
mAppContext
;
mTileProvider
=
new
LOKitTileProvider
(
mApplication
.
getLayerController
());
}
private
Bitmap
convert
(
Bitmap
bitmap
,
Bitmap
.
Config
config
)
{
Bitmap
convertedBitmap
=
Bitmap
.
createBitmap
(
bitmap
.
getWidth
(),
bitmap
.
getHeight
(),
config
);
Canvas
canvas
=
new
Canvas
(
convertedBitmap
);
Paint
paint
=
new
Paint
();
paint
.
setColor
(
Color
.
BLACK
);
canvas
.
drawBitmap
(
bitmap
,
0
,
0
,
paint
);
return
convertedBitmap
;
}
public
void
run
()
{
initialize
();
try
{
boolean
drawn
=
false
;
while
(
true
)
{
...
...
android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -88,8 +88,8 @@ public class LOKitTileProvider implements TileProvider {
ByteBuffer
buffer
=
ByteBuffer
.
allocateDirect
(
TILE_SIZE
*
TILE_SIZE
*
4
);
Bitmap
bitmap
=
Bitmap
.
createBitmap
(
TILE_SIZE
,
TILE_SIZE
,
Bitmap
.
Config
.
ARGB_8888
);
mDocument
.
paintTile
(
buffer
,
TILE_SIZE
,
TILE_SIZE
,
(
int
)
Math
.
round
(
mPositionWidth
),
(
int
)
Math
.
round
(
mPositionHeight
),
(
int
)
Math
.
round
(
mTileWidth
+
pixelToTwip
(
1
,
mDPI
)),
(
int
)
Math
.
round
(
mTileHeight
+
pixelToTwip
(
1
,
mDPI
)));
mDocument
.
paintTile
(
buffer
,
TILE_SIZE
,
TILE_SIZE
,
(
int
)
Math
.
round
(
mPositionWidth
),
(
int
)
Math
.
round
(
mPositionHeight
),
(
int
)
Math
.
round
(
mTileWidth
+
pixelToTwip
(
1
,
mDPI
)),
(
int
)
Math
.
round
(
mTileHeight
+
pixelToTwip
(
1
,
mDPI
)));
bitmap
.
copyPixelsFromBuffer
(
buffer
);
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoLayerClient.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -89,7 +89,7 @@ public abstract class GeckoLayerClient implements GeckoEventListener {
protected
abstract
boolean
setupLayer
();
protected
abstract
void
updateLayerAfterDraw
(
Rect
updatedRect
);
protected
abstract
void
updateLayerAfterDraw
();
protected
abstract
IntSize
getBufferSize
();
...
...
@@ -109,38 +109,23 @@ public abstract class GeckoLayerClient implements GeckoEventListener {
sendResizeEventIfNecessary
();
}
public
boolean
beginDrawing
(
int
width
,
int
height
,
int
tileWidth
,
int
tileHeight
,
String
metadata
)
{
Log
.
e
(
LOGTAG
,
"### beginDrawing "
+
width
+
" "
+
height
+
" "
+
tileWidth
+
" "
+
tileHeight
);
public
boolean
beginDrawing
(
ViewportMetrics
viewportMetrics
)
{
if
(
setupLayer
())
{
Log
.
e
(
LOGTAG
,
"### Cancelling due to layer setup"
);
return
false
;
}
try
{
JSONObject
viewportObject
=
new
JSONObject
(
metadata
);
mNewGeckoViewport
=
new
ViewportMetrics
(
viewportObject
);
Log
.
e
(
LOGTAG
,
"### beginDrawing new Gecko viewport "
+
mNewGeckoViewport
);
}
catch
(
JSONException
e
)
{
Log
.
e
(
LOGTAG
,
"Aborting draw, bad viewport description: "
+
metadata
);
return
false
;
}
mNewGeckoViewport
=
viewportMetrics
;
mTileLayer
.
beginTransaction
();
return
true
;
}
/*
* TODO: Would be cleaner if this took an android.graphics.Rect instead, but that would require
* a little more JNI magic.
*/
public
void
endDrawing
(
int
x
,
int
y
,
int
width
,
int
height
)
{
public
void
endDrawing
()
{
synchronized
(
mLayerController
)
{
try
{
updateViewport
(!
mUpdateViewportOnEndDraw
);
mUpdateViewportOnEndDraw
=
false
;
Rect
rect
=
new
Rect
(
x
,
y
,
x
+
width
,
y
+
height
);
updateLayerAfterDraw
(
rect
);
updateLayerAfterDraw
();
}
finally
{
mTileLayer
.
endTransaction
();
}
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/GeckoSoftwareLayerClient.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -105,25 +105,9 @@ public class GeckoSoftwareLayerClient extends GeckoLayerClient {
}
@Override
public
boolean
beginDrawing
(
int
width
,
int
height
,
int
tileWidth
,
int
tileHeight
,
String
metadata
)
{
boolean
shouldContinue
=
super
.
beginDrawing
(
width
,
height
,
tileWidth
,
tileHeight
,
metadata
);
if
(!
shouldContinue
)
{
return
shouldContinue
;
}
// If the window size has changed, reallocate the buffer to match.
if
(
mBufferSize
.
width
!=
width
||
mBufferSize
.
height
!=
height
)
{
mBufferSize
=
new
IntSize
(
width
,
height
);
}
return
shouldContinue
;
}
@Override
protected
void
updateLayerAfterDraw
(
Rect
updatedRect
)
{
protected
void
updateLayerAfterDraw
()
{
if
(
mTileLayer
instanceof
MultiTileLayer
)
{
((
MultiTileLayer
)
mTileLayer
).
invalidate
(
updatedRect
);
((
MultiTileLayer
)
mTileLayer
).
invalidate
();
}
}
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/Layer.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -195,6 +195,7 @@ public abstract class Layer {
* update is complete.
*/
protected
boolean
performUpdates
(
RenderContext
context
)
{
if
(
mNewOrigin
!=
null
)
{
mOrigin
=
mNewOrigin
;
mNewOrigin
=
null
;
...
...
android/experimental/LOAndroid3/src/java/org/mozilla/gecko/gfx/MultiTileLayer.java
Dosyayı görüntüle @
ff6aac41
...
...
@@ -53,8 +53,6 @@ import java.util.ArrayList;
/**
* Encapsulates the logic needed to draw a layer made of multiple tiles.
* <p/>
* TODO: Support repeating.
*/
public
class
MultiTileLayer
extends
Layer
{
private
static
final
String
LOGTAG
=
"GeckoMultiTileLayer"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment