protected void drawImageMosaic(Graphics2D g2) { // Break the image up into tiles. Draw each // tile with its own transparency, allowing // the background to show through to varying // degrees. int side = 36; int width = mImage.getWidth(); int height = mImage.getHeight(); for (int y = 0; y < height; y += side) { for (int x = 0; x < width; x += side) { // Calculate an appropriate transparency value. float xBias = (float) x / (float) width; float yBias = (float) y / (float) height; float alpha = 1.0f - Math.abs(xBias - yBias); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha)); // Draw the subimage. int w = Math.min(side, width - x); int h = Math.min(side, height - y); BufferedImage tile = mImage.getSubimage(x, y, w, h); g2.drawImage(tile, x, y, null); } } // Reset the composite. g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); }
private boolean buildNoteSequence() { noteSequence = new NoteSequence(); double quantizeBeatFactor = quantizeBeatSetting * 1000.0 * 60.0 / (double) getBPM(); double quantizeDurationFactor = quantizeDurationSetting * 1000.0 * 60.0 / (double) getBPM(); for (int i = 0; i < noteList.size(); i++) { noteListElement = noteList.get(i); if (noteListElement.underTone == true) { continue; } note = noteListElement.note; if (note < getLowPitch()) continue; if (note > getHighPitch()) continue; double startTime = (double) (noteListElement.startTime); if (quantizeBeatFactor != 0.0) startTime = Math.floor(startTime / quantizeBeatFactor) * quantizeBeatFactor; long startTick = 1 + (long) (startTime * getTickRate() / 1000.0); double endTime = (double) (noteListElement.endTime); if (quantizeBeatFactor != 0.0) endTime = Math.ceil(endTime / quantizeBeatFactor) * quantizeBeatFactor; if (quantizeDurationFactor != 0) endTime = startTime + (Math.ceil((endTime - startTime) / quantizeDurationFactor) * quantizeDurationFactor); long endTick = 1 + (long) (endTime * getTickRate() / 1000.0); if ((endTick - startTick) < 1) endTick = startTick + 1; System.out.println( "times: " + startTime + ", " + endTime + ", " + getStartTime() + ", " + getEndTime()); if (endTime < getStartTime()) continue; if (startTime > getEndTime()) continue; velocity = 64; noteSequence.add(new NoteSequenceElement(note, ON, startTick, velocity)); noteSequence.add(new NoteSequenceElement(note, OFF, endTick, velocity)); } if (noteSequence.size() == 0) { return false; } else { noteSequence.sort(); return true; } }
public boolean transform(ProgressListener progressListener) { toneMap = toneMapFrame.getToneMap(); timeSet = toneMap.getTimeSet(); pitchSet = toneMap.getPitchSet(); timeRange = timeSet.getRange(); pitchRange = pitchSet.getRange(); pitchFreqSet = pitchSet.getFreqSet(); audioFTPower = new double[timeRange * (pitchRange + 1)]; int startSample = timeSet.getStartSample(); int endSample = timeSet.getEndSample(); int sampleLength = (int) Math.floor((endSample - startSample) / ((double) resolution)); double[] audioSamples = new double[sampleLength]; for (int i = 0; i < sampleLength; i++) { audioSamples[i] = (double) audioData[startSample + i * resolution]; } int sampleIndexSize = (int) Math.floor((double) timeSet.getSampleIndexSize() / (double) resolution); double dt = (double) resolution / sampleRate; if (transformMode == TRANSFORM_MODE_JAVA) { wavelet.convert( audioFTPower, audioSamples, pitchFreqSet, dt, (double) pFactor, (double) tFactor, sampleIndexSize, sampleLength, pitchRange, progressListener); } else { WaveletJNI waveletJNI = new WaveletJNI(); waveletJNI.waveletConvert( audioFTPower, audioSamples, pitchFreqSet, dt, (double) pFactor, (double) tFactor, sampleIndexSize, sampleLength, pitchRange, progressListener); } return true; }
public void animate(float[] pts, float[] deltas, int index, int limit) { float newpt = pts[index] + deltas[index]; if (newpt <= 0) { newpt = -newpt; deltas[index] = (float) (Math.random() * 3.0 + 2.0); } else if (newpt >= (float) limit) { newpt = 2.0f * limit - newpt; deltas[index] = -(float) (Math.random() * 3.0 + 2.0); } pts[index] = newpt; }
public boolean ManipBoxPattern(int xMin, int yMin, int xMax, int yMax, double amount) { int x; int y; y = yMin; while (y < yMax) { x = xMin; while (x < xMax) { Pixel p = this.getPixel(x, y); int yOffset = Math.abs(yMin - y); int xOffset = Math.abs(xMin - x); double ra = normal(x, xMin, xMax); if (ra >= 1.0) { int R = (int) (p.getRed() * amount); int G = (int) (p.getGreen() * amount); int B = (int) (255 * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); p.getColor().brighter(); } else { int R = (int) (p.getRed() * amount); int G = (int) (255 * amount); int B = (int) (p.getBlue() * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); } if (x % 2 == 0) { int R = (int) (255 * amount); int G = (int) (p.getGreen() * amount); int B = (int) (p.getBlue() * amount); p.setRed(R); p.setGreen(G); p.setBlue(B); } x = x + 1; } y = y + 1; } return true; }
public static BufferedImage scaleImage(BufferedImage bi, double scale) { int w1 = (int) (Math.round(scale * bi.getWidth())); int h1 = (int) (Math.round(scale * bi.getHeight())); BufferedImage image = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = image.createGraphics(); g2.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2.setPaint(Color.white); g2.fillRect(0, 0, w1, h1); g2.drawImage(bi, 0, 0, w1, h1, null); // this); g2.dispose(); return image; }
public void randomColor() { Pixel[][] pixels = this.getPixels2D(); for (Pixel[] row : pixels) { for (Pixel currentPixel : row) { int randomRed, randomBlue, randomGreen; randomRed = (int) (Math.random() * 256); randomBlue = (int) (Math.random() * 256); randomGreen = (int) (Math.random() * 256); currentPixel.setBlue(randomBlue); currentPixel.setRed(randomRed); currentPixel.setGreen(randomGreen); } } }
public void calcDimsAndStartPts(LinkedList llist, draw d) { /* Determines the following variables Lenx, Leny, Startx, Starty, TitleStarty */ // Task: Calculate the length and height of a node and its starting point. // It also computes the y-coordinate of the title double TitleToSSGap, MinGt, MaxGt, Diam, MinTitlex, MaxTitlex; int NumNodes, NumLines; super.calcDimsAndStartPts(llist, d); // With circular nodes, not adding Textheight works better to finetune the circle size Lenx = Maxstringlength - .02; Leny = ((linespernode + 1) * Textheight) + ((linespernode - 1) * (0.5 * Textheight)); TDx = (Lenx + Leny) / 5.0; // Height is a third of their average *) TDy = TDx / Math.sqrt(3); TitleToSSGap = 2 * Titleheight; NumLines = title.size(); Startx = 0.0; Starty = Topy - IconHeight - IconToTitleGap - (NumLines * Titleheight) - ((NumLines - 1) * (0.5 * Titleheight)) - TitleToSSGap - (Lenx / 2.0) - .15; TitleStarty = (Topy - IconHeight - IconToTitleGap - Titleheight) + .05; }
public void start() { Dimension size = getSize(); for (int i = 0; i < animpts.length; i += 2) { animpts[i + 0] = (float) (Math.random() * size.width); animpts[i + 1] = (float) (Math.random() * size.height); deltas[i + 0] = (float) (Math.random() * 4.0 + 2.0); deltas[i + 1] = (float) (Math.random() * 4.0 + 2.0); if (animpts[i + 0] > size.width / 6.0f) { deltas[i + 0] = -deltas[i + 0]; } if (animpts[i + 1] > size.height / 6.0f) { deltas[i + 1] = -deltas[i + 1]; } } anim = new Thread(this); anim.setPriority(Thread.MIN_PRIORITY); anim.start(); }
public boolean play() { try { if (playState != STOPPED) playStop(); if (audioBytes == null) return false; DataLine.Info info = new DataLine.Info(Clip.class, format); clip = (Clip) AudioSystem.getLine(info); clip.addLineListener(new ClipListener()); long clipStart = (long) (audioBytes.length * getStartTime() / (getDuration() * 1000.0)); long clipEnd = (long) (audioBytes.length * getEndTime() / (getDuration() * 1000.0)); if ((clipEnd - clipStart) > MAX_CLIP_LENGTH) clipEnd = clipStart + MAX_CLIP_LENGTH; byte[] clipBytes = new byte[(int) (clipEnd - clipStart)]; System.arraycopy(audioBytes, (int) clipStart, clipBytes, 0, clipBytes.length); clip.open(format, clipBytes, 0, clipBytes.length); FloatControl panControl = (FloatControl) clip.getControl(FloatControl.Type.PAN); panControl.setValue((float) panSetting / 100.0f); double value = (double) gainSetting; FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); float dB = (float) (Math.log(value == 0.0 ? 0.0001 : value) / Math.log(10.0) * 20.0); gainControl.setValue(dB); double playStartTime = (player.getSeekTime() / 100) * (playGetLength()); clip.setMicrosecondPosition((long) playStartTime); clip.start(); playState = PLAYING; return true; } catch (Exception ex) { ex.printStackTrace(); playState = STOPPED; clip = null; return false; } }
/** * Overrides TPoint showCoordinates method. * * @param vidPanel the video panel */ public void showCoordinates(VideoPanel vidPanel) { // put values into pointmass x and y fields Point2D p = getWorldPosition(vidPanel); track.xField.setValue(p.getX()); track.yField.setValue(p.getY()); track.magField.setValue(p.distance(0, 0)); double theta = Math.atan2(p.getY(), p.getX()); track.angleField.setValue(theta); super.showCoordinates(vidPanel); }
/** * Gets the page count of this section. * * @param g2 the graphics context * @param pf the page format * @return the number of pages needed */ public int getPageCount(Graphics2D g2, PageFormat pf) { if (message.equals("")) return 0; FontRenderContext context = g2.getFontRenderContext(); Font f = new Font("Serif", Font.PLAIN, 72); Rectangle2D bounds = f.getStringBounds(message, context); scale = pf.getImageableHeight() / bounds.getHeight(); double width = scale * bounds.getWidth(); int pages = (int) Math.ceil(width / pf.getImageableWidth()); return pages; }
public void setFontSize(float size) { // FONT_SIZE.basicSet(this, new Double(size)); Point2D.Double p = new Point2D.Double(0, size); AffineTransform tx = TRANSFORM.get(this); if (tx != null) { try { tx.inverseTransform(p, p); Point2D.Double p0 = new Point2D.Double(0, 0); tx.inverseTransform(p0, p0); p.y -= p0.y; } catch (NoninvertibleTransformException ex) { ex.printStackTrace(); } } FONT_SIZE.set(this, Math.abs(p.y)); }
double xCoord(GTN Root) { /* GIVEN : The pointer to the node whose coordinates we're currently trying to find. TASK : Find the xCoord of this node, using the principles used in Algorithm 3 of "Tidy Drawings of Trees", by Charles Wetherell and Alfred Shannon. Note that this is a recursive procedure, which calls on itself at a given level to find the position of the children at the level below. RETURN: Ultimately, the xCoord of the Root node of the tree. */ double AccumXCoords, ChildAvgPos, Tempx, Holder8087; int ChildCount; GTN TempChild; if (Root == null) { return (0.0); } else { CurrLevel = CurrLevel + 1; TempChild = Root.Children; ChildCount = 0; AccumXCoords = 0; while (TempChild != null) { ChildCount = ChildCount + 1; Holder8087 = xCoord(TempChild); AccumXCoords = AccumXCoords + Holder8087; TempChild = TempChild.Siblings; } CurrLevel = CurrLevel - 1; if (ChildCount == 0) ChildAvgPos = 0.0; else ChildAvgPos = AccumXCoords / ((double) ChildCount); if (NextPos[CurrLevel] > ChildAvgPos) Tempx = NextPos[CurrLevel]; else Tempx = ChildAvgPos; // The average of node's children's positions *) if (Root.Children == null) { Root.GModifier = 0.0; Root.Gx = Tempx; } else { Modifier[CurrLevel] = Math.max(Modifier[CurrLevel], Tempx - ChildAvgPos); Root.GModifier = Modifier[CurrLevel]; Root.Gx = Modifier[CurrLevel] + ChildAvgPos; } Root.Gy = Starty - (Root.Glevel * (yspacing * Lenx)); NextPos[CurrLevel] = Root.Gx + (xspacing * Lenx); return (Root.Gx); } }
public boolean load(File file) { this.file = file; if (file != null && file.isFile()) { try { errStr = null; audioInputStream = AudioSystem.getAudioInputStream(file); fileName = file.getName(); format = audioInputStream.getFormat(); } catch (Exception ex) { reportStatus(ex.toString()); return false; } } else { reportStatus("Audio file required."); return false; } numChannels = format.getChannels(); sampleRate = (double) format.getSampleRate(); sampleBitSize = format.getSampleSizeInBits(); long frameLength = audioInputStream.getFrameLength(); long milliseconds = (long) ((frameLength * 1000) / audioInputStream.getFormat().getFrameRate()); double audioFileDuration = milliseconds / 1000.0; if (audioFileDuration > MAX_AUDIO_DURATION) duration = MAX_AUDIO_DURATION; else duration = audioFileDuration; frameLength = (int) Math.floor((duration / audioFileDuration) * (double) frameLength); try { audioBytes = new byte[(int) frameLength * format.getFrameSize()]; audioInputStream.read(audioBytes); } catch (Exception ex) { reportStatus(ex.toString()); return false; } getAudioData(); return true; }
public float getFontSize() { // return FONT_SIZE.get(this).floatValue(); Point2D.Double p = new Point2D.Double(0, FONT_SIZE.get(this)); AffineTransform tx = TRANSFORM.get(this); if (tx != null) { tx.transform(p, p); Point2D.Double p0 = new Point2D.Double(0, 0); tx.transform(p0, p0); p.y -= p0.y; /* try { tx.inverseTransform(p, p); } catch (NoninvertibleTransformException ex) { ex.printStackTrace(); }*/ } return (float) Math.abs(p.y); }
/** * Returns the text rotation in radians : subclassers that don't support rotating text may return * 0 here. Used by TextLayout only. */ protected double getRotation() { // debug(set.getAttribute(TEXT_ROTATION).toString()); return Math.toRadians(element.getAttribute(TEXT_ROTATION).doubleValue()); }