Skip to content

Commit

Permalink
Merge branch 'feature/tenprint' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
io7m committed Jun 4, 2015
2 parents 042c80b + 6d2caab commit c70912d
Show file tree
Hide file tree
Showing 15 changed files with 2,027 additions and 48 deletions.
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
<module>simplified-opds-tests-junit4</module>
<module>simplified-opds-tests</module>
<module>simplified-stack</module>
<module>simplified-tenprint</module>
<module>simplified-test-utilities</module>
</modules>

Expand Down
5 changes: 5 additions & 0 deletions simplified-app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@
<artifactId>simplified-stack</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simplified-tenprint</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>android</groupId>
Expand Down
9 changes: 9 additions & 0 deletions simplified-app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@
android:name="org.nypl.simplified.app.testing.ThemeZooActivity"
android:exported="true">
</activity>
<activity
android:name="org.nypl.simplified.app.testing.CoverGeneration"
android:exported="true">

</activity>
<activity
android:name="org.nypl.simplified.app.testing.DrawTest"
android:exported="true">
</activity>

<!-- Reader -->
<activity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.List;
import java.util.concurrent.ExecutorService;

import org.nypl.simplified.app.catalog.CatalogBookCoverGenerator;
import org.nypl.simplified.app.catalog.CatalogBookCoverGeneratorRequestHandler;
import org.nypl.simplified.app.catalog.CatalogBookCoverGeneratorType;
import org.nypl.simplified.app.utilities.LogUtilities;
Expand Down Expand Up @@ -59,23 +58,21 @@ private static URI generateCoverURI(
public static BookCoverProviderType newCoverProvider(
final Context in_c,
final BooksType in_books,
final CatalogBookCoverGeneratorType in_generator,
final ExecutorService in_exec)
{
final CatalogBookCoverGenerator cover_gen =
new CatalogBookCoverGenerator();

final Resources rr = in_c.getResources();
final Picasso.Builder pb = new Picasso.Builder(in_c);
pb.defaultBitmapConfig(Bitmap.Config.RGB_565);
pb
.indicatorsEnabled(rr.getBoolean(R.bool.debug_picasso_cache_indicators));
pb.loggingEnabled(rr.getBoolean(R.bool.debug_picasso_logging));
pb.addRequestHandler(new CatalogBookCoverGeneratorRequestHandler(
cover_gen));
in_generator));
pb.executor(in_exec);

final Picasso p = NullCheck.notNull(pb.build());
return new BookCoverProvider(p, in_books, cover_gen);
return new BookCoverProvider(p, in_books, in_generator);
}

private final BooksType books;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicBoolean;

import org.nypl.simplified.app.catalog.CatalogBookCoverGenerator;
import org.nypl.simplified.app.reader.ReaderBookmarks;
import org.nypl.simplified.app.reader.ReaderBookmarksType;
import org.nypl.simplified.app.reader.ReaderHTTPMimeMap;
Expand Down Expand Up @@ -44,6 +45,8 @@
import org.nypl.simplified.opds.core.OPDSFeedParserType;
import org.nypl.simplified.opds.core.OPDSFeedTransport;
import org.nypl.simplified.opds.core.OPDSFeedTransportType;
import org.nypl.simplified.tenprint.TenPrintGenerator;
import org.nypl.simplified.tenprint.TenPrintGeneratorType;
import org.slf4j.Logger;

import android.app.Application;
Expand All @@ -69,24 +72,25 @@ private static final class CatalogAppServices implements
AccountDataLoadListenerType,
AccountSyncListenerType
{
private static final Logger LOG_CA;
private static final Logger LOG_CA;

static {
LOG_CA = LogUtilities.getLog(CatalogAppServices.class);
}

private final BooksType books;
private final BookCoverProviderType cover_provider;
private final DownloaderType downloader;
private final ExecutorService exec_books;
private final ExecutorService exec_catalog_feeds;
private final ExecutorService exec_covers;
private final ExecutorService exec_downloader;
private final URI feed_initial_uri;
private final FeedLoaderType feed_loader;
private final HTTPType http;
private final ScreenSizeControllerType screen;
private final AtomicBoolean synced;
private final BooksType books;
private final BookCoverProviderType cover_provider;
private final DownloaderType downloader;
private final ExecutorService exec_books;
private final ExecutorService exec_catalog_feeds;
private final ExecutorService exec_covers;
private final ExecutorService exec_downloader;
private final URI feed_initial_uri;
private final FeedLoaderType feed_loader;
private final HTTPType http;
private final ScreenSizeControllerType screen;
private final AtomicBoolean synced;
private final CatalogBookCoverGenerator cover_generator;

public CatalogAppServices(
final Context context,
Expand Down Expand Up @@ -175,10 +179,14 @@ public CatalogAppServices(
* Configure cover provider.
*/

final TenPrintGeneratorType ten_print =
TenPrintGenerator.newGenerator();
this.cover_generator = new CatalogBookCoverGenerator(ten_print);
this.cover_provider =
BookCoverProvider.newCoverProvider(
context,
this.books,
this.cover_generator,
this.exec_covers);

this.synced = new AtomicBoolean(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,25 @@
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.nypl.simplified.app.utilities.LogUtilities;
import org.nypl.simplified.app.utilities.TextUtilities;
import org.nypl.simplified.http.core.URIQueryBuilder;
import org.nypl.simplified.tenprint.TenPrintGeneratorType;
import org.nypl.simplified.tenprint.TenPrintInput;
import org.nypl.simplified.tenprint.TenPrintInputBuilderType;
import org.slf4j.Logger;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;

import com.io7m.jnull.NullCheck;

public final class CatalogBookCoverGenerator implements
CatalogBookCoverGeneratorType
{
private static final Logger LOG;
private static final Logger LOG;
private final TenPrintGeneratorType generator;

static {
LOG = LogUtilities.getLog(CatalogBookCoverGenerator.class);
Expand All @@ -45,9 +48,10 @@ private static Map<String, String> getParameters(
return m;
}

public CatalogBookCoverGenerator()
public CatalogBookCoverGenerator(
final TenPrintGeneratorType in_generator)
{
// Nothing
this.generator = NullCheck.notNull(in_generator);
}

@Override public Bitmap generateImage(
Expand All @@ -59,31 +63,29 @@ public CatalogBookCoverGenerator()

final Map<String, String> params =
CatalogBookCoverGenerator.getParameters(u);
final String title = NullCheck.notNull(params.get("title"));

final Bitmap b =
Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);

final Canvas c = new Canvas(b);
final Paint p = new Paint();

final int hash = title.hashCode();

p.setStyle(Style.FILL);
p.setColor(hash);
p.setAlpha(0xff);
c.drawRect(0, 0, width, height, p);

p.setColor(Color.WHITE);
p.setAlpha(0xff);
c.drawRect(4, 4, width - 4, height / 4, p);

p.setColor(Color.BLACK);
p.setAlpha(0xff);
p.setAntiAlias(true);
c.drawText(TextUtilities.ellipsize(title, 16), 8, 16, p);

return NullCheck.notNull(b);
final String title_maybe = params.get("title");
final String title =
title_maybe == null ? "" : NullCheck.notNull(title_maybe);
final String author_maybe = params.get("author");
final String author =
author_maybe == null ? "" : NullCheck.notNull(author_maybe);

final TenPrintInputBuilderType ib = TenPrintInput.newBuilder();
ib.setAuthor(author);
ib.setTitle(title);
ib.setCoverHeight(height);
final TenPrintInput i = ib.build();
final Bitmap cover = this.generator.generate(i);

final Bitmap container =
Bitmap.createBitmap(width, height, Config.RGB_565);
final Canvas c = new Canvas(container);
final Paint white = new Paint();
white.setColor(Color.WHITE);
c.drawRect(0, 0, width, height, white);
c.drawBitmap(cover, (width - cover.getWidth()) / 2, 0, null);
return NullCheck.notNull(container);
}

@Override public URI generateURIForTitleAuthor(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package org.nypl.simplified.app.testing;

import org.nypl.simplified.app.R;
import org.nypl.simplified.tenprint.TenPrintGenerator;
import org.nypl.simplified.tenprint.TenPrintGeneratorType;
import org.nypl.simplified.tenprint.TenPrintInput;
import org.nypl.simplified.tenprint.TenPrintInputBuilderType;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.io7m.jnull.NullCheck;
import com.io7m.jnull.Nullable;

public final class CoverGeneration extends Activity
{
@Override protected void onCreate(
final @Nullable Bundle state)
{
super.onCreate(state);

final TenPrintGeneratorType g = TenPrintGenerator.newGenerator();

final TenPrintInputBuilderType b = TenPrintInput.newBuilder();
b.setAuthor("G. Mercer Adam, A Ethelwyn Wetherby");
b.setTitle("An Algonquin Maiden: A Romance ...");
b.setBaseBrightness(0.9f);
b.setBaseSaturation(0.9f);
b.setCoverHeight(120);
b.setGridScale(1.0f);
b.setShapeThickness(15);
b.setDebuggingArtwork(false);

final TenPrintInput i = b.build();
final Bitmap image = g.generate(i);
this.setContentView(R.layout.test_cover_gen);

final ViewGroup container =
NullCheck.notNull((ViewGroup) this
.findViewById(R.id.test_cover_container));

final ImageView v = new ImageView(this);
v.setLayoutParams(new FrameLayout.LayoutParams(image.getWidth(), image
.getHeight()));
v.setImageBitmap(image);
container.addView(v);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package org.nypl.simplified.app.testing;

import org.nypl.simplified.app.R;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.io7m.jnull.NullCheck;
import com.io7m.jnull.Nullable;

public final class DrawTest extends Activity
{
private static void drawEllipse(
final Canvas c,
final int x,
final int y,
final int w,
final int h,
final Paint p)
{
final float left = x;
final float top = y;
final float right = x + w;
final float bottom = y + h;
final RectF oval = new RectF(left, top, right, bottom);
c.drawOval(oval, p);
}

private static void drawRing(
final Canvas c,
final int x,
final int y,
final int w,
final int h,
final int thick,
final Paint p,
final Paint q)
{
{
final float left = x;
final float top = y;
final float right = x + w;
final float bottom = y + h;
final RectF oval = new RectF(left, top, right, bottom);
c.drawOval(oval, p);
}

{
final float left = x + thick;
final float top = y + thick;
final float right = x + (w - thick);
final float bottom = y + (h - thick);
final RectF oval = new RectF(left, top, right, bottom);
c.drawOval(oval, q);
}
}

@Override protected void onCreate(
final @Nullable Bundle state)
{
super.onCreate(state);

this.setContentView(R.layout.test_cover_gen);

final ViewGroup container =
NullCheck.notNull((ViewGroup) this
.findViewById(R.id.test_cover_container));

final Bitmap image = Bitmap.createBitmap(300, 450, Config.RGB_565);
final Canvas canvas = new Canvas(image);

final Paint p = new Paint();
p.setColor(Color.RED);
final Paint q = new Paint();
p.setColor(Color.BLUE);
DrawTest.drawRing(canvas, 10, 10, 200, 200, 20, p, q);

final ImageView v = new ImageView(this);
v.setLayoutParams(new FrameLayout.LayoutParams(image.getWidth(), image
.getHeight()));
v.setImageBitmap(image);
container.addView(v);
}
}
Loading

0 comments on commit c70912d

Please sign in to comment.